第一篇:
表设计和查询的一些参考
1.合理使用索引
索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引的使用要恰到好处,其使用原则如下:
●在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连接的字段则由优化器自动生成索引。
●在频繁进行排序或分组(即进行group by或order by操作)的列上建立索引。
●在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查询效率,反而会严重降低更新速度。
...
以前在我的博客上发过文章总结我遇到的数据及网页上中文乱码的处理办法[再谈乱码问题,如何解决MYSQL数据中文乱码问题] [解决jsp,tomcat,MYSQL下中文乱码问题] ,但是,不幸的是,今天又遇到了,用过以前的办法,没能解决,我相信绝对不是网页的问题.因为,我在MYSQL里直接添加中文的数据能在网页上正常显示,可是在网页中操作添加的数据,到MYSQL数据库里一看,全是???问号.我下断点,跟踪进去看了,程序中最后处理到数据库操作时,还是中文,操作到数据库后,就是?问号了.后来找了很多资料,终于把这个问题解决,........
那怎么办呢,只要把那几个的编码改成utf8的,那应该就可以了.
1: 在Mysql的配置文件 my.ini (一般在c:/windows/下面) 里加上服务器的默认编码配置: default-character-set=utf8
2: 修改你的数据库的字符编码:进入Mysql数据库,通过命令修改你的数据库字符编码: ALTER DATABASE `databaseName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci (修改后需要重启Mysql数据库)
3: 如果你的表以及表里的字段使用了不正确的字符编码,同样需要修正过来:命令:
修改表的编码: ALTER TABLE `tableName` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
修改字段的编码: ALTER TABLE `tableName` CHANGE `dd` `dd` VARCHAR( 45 ) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL
(做好了时,再跑一下上面那两个查看字符编码的命令,看看是否全部都变成了utf8)
4: 如果还无效的话,再尝试使用这个MYSQL数据库连接字符串: jdbc:mysql://localhost:3306/xxxx?useUnicode=true&characterEncoding=UTF-8 (有时可能需要将符号(&)转码写成(&))......
昨天晚上和网友讨论了一个关于数据库联合查询的效率的问题.说实话,以前我一直没怎么考虑过这个问题,在写SQL时,都没怎么考虑,似乎一切都成了习惯,或者已经懒散贯了,但是,网友和我聊起来了,我也就好好考虑起这个问题了,平时不考虑时不知道,真正好好计较一下,才发现还有很多门道.
.................
根据以上的思考,结果很吓人,经过对比,发现,结果好恐怖,遍历次数差别简直就是.........比比看看:600万--2.3万--1600--800,这种比例实在太恐怖了,我不得不对联合查询产生了动摇,难道我们为联合查询的便利,就付出如此巨大的浪费吗?我们真的应该重新审视一下,我们平时已经习惯的编程习惯,以及那些我们认为理所当然的代码............
自从[关于qwikioffice EXT2 desktop转JSP的发展方向] 文章发表以来,众多朋友加入到这个队伍来,而我之前太忙,使得进度缓慢,让大家有所失望。春节回来后,在女友的鼓励下,连续几天高强度的研究qwikioffice的PHP代码,终于使得此工作有了突破进的进展。但是,由于开始设计的思路上不太完善,目前虽然已经基本实现了在JSP平台上的使用,但是,在将来的扩展及使用上,很可能会带来意外的麻烦。
。。。。。。。。。。。。。。。
关于新项目的构思上,目前,我有两种想法:。。。。。。。。。。。。
作为开发者来说,我很想采用第二种方式,以摆脱被那PHP代码及可怕的表结构设计的烦恼,但是,又担心自主开发时带来与pHP版的差异及升级性问题。目前,我想,还是两个想法同步进行,这样就可以在同时进行两个项目中,相互借鉴,说不定,将来两种方式都成功了,又让世人多一种选择。
如果新考虑的这两种思路开始了的话,我会第一时间公布项目的SVN地址,希望有想法的朋友们也和我一起来。。。。。。。。。。。。。。。。。
这几天在学习使用IBATIS突然要使用模糊查询,以及动态多个条件查询,按照自己的想法试了很久,都没解决这个问题.
首先是模糊查询的问题,开始时我使用如下条件:select * from user where name like '%#value#%'. 可是怎么也不行,好像还报错了.后来在网上找到了解决方法,就是使用$来代替#号.
1>写成: like '%$value$%' 就可以了,<!-- 模糊查询不能用#,#是用prepareStatement的?插入参数,$是文本替换 -->,
2>同时还找到另一个方法,但是那个方法我试了很久,就是不行,方法为: like '%' || #value# || '%' , 查询出来的结果居然是全部.后来在网上有人说,这个写法是oracle的写法,
3>如果是mysql,则应该写成: name like CONCAT('%',#value:VARCHAR#,'%') ,不过我没试用过,反正有一个方法成功就可以了.
第一个方法我试用成功,后面的也就没试过,有兴趣的朋友可以试试
第二个大问题就是多条件组合查询,................
从打定主意辞职时开始正式切入到自己的J2EE技术研究里,ZB论坛也很少去了.在这期间,初步了解并使用了jQuery,AJAX,STRUTS,servlet,感觉还是很爽的.自从进入公司后,就没有再体会到编程的乐趣了,也许,工作只是为了任务,而自己研究技术,却是兴趣,完全是两码事.希望月底离职后,可以找到我有兴趣的工作.
我在开始技术研究时,就把将来要做的这一切技术研究,以及研究学习过程中,自己动手做的东西,统称[busfly项目开发 ],有兴趣的朋友可以关注我博客里的这类标签[busfly项目开发 ]. 在上一篇文章里[最近在做啥-技术研究而已] ,也已经提到我当前已经做好了两个东西,使用的就是前面提到的这几项实用的技术,这两东西也已经挂到了网上,地址为:http://busfly.openued.com/. 因为只是为研究学习,所以也不会做得很全面,同样,过滤以及身份校验几乎都没做,所以,一直都不想放地址出来,但是,为了大家共同交流,所以现在还是决定放出来,不过,现在你所能看到的,能用的,只有留言本了,删除权限也没设定,都能删除,哈哈.所以大家不要做破坏哦~~不过也没关系,没什么重要数据. 在这里,我要特别感觉神采飞扬提供空间赞助了.
...用过DEDECMS的人都知道DEDECMS后台提供了一个SQL运行器的功能,一直简单而强大的功能,我很喜欢这个功能.

通过这个功能,可以快速简单的修改数据,特别是批量修改,但是,前提是,你一定要会数据库SQL编程,这个不是可视的傻瓜化功能,而是和SQL一样的手工操作编写SQL语句.
...
在以前的文章里,也有一些提及到这个内容,主要是在以下文章里:
[再谈乱码问题,如何解决MYSQL数据中文乱码问题] [解决jsp,tomcat,MYSQL下中文乱码问题] [如何配置tomcat的MYSQL数据库连接池] [java_jsp连接各种数据库方法的简单示例] [java-jsp连接数据库大全(个人收集)]
但是今天,还是要从头开始~~~~
一般来说,配制数据库有几个地方都可以,<1>,在tomcat的conf下的server.xml里配制,<2>,在\conf\Catalina\localhost下写一个XML配制文档,里面的内容主要是指定WEB程序的访问URL和程序目录,同样可以在这里配制数据库连接池.<注意>,以上两方法后,还要在程序的WEB-INF的web.xml里配制.才可以,
以上三个地方分别如何配制,我也没都去试,有兴趣的可以自己去收集一下,我这里示例一下<2>和<3>...