建立时间索引后,按照时间排序来获得列表的查询,速度增快了不少

来源:互联网 发布:java继承例子 编辑:程序博客网 时间:2024/05/16 11:49

一个论坛中搜评论列表
没创建时间索引前: 总共   其中排序 取行
    0.0617     0.0381  0.0235 使用了聚集索引
创建索引后: 0.00699  0.00036  0.00663 使用了普通索引

全表搜评论列表
创建索引前 0.222  0.119539 0.103411使用了聚集索引
创建索引后: 0.00681  0.000349 0.006462使用了普通索引

具体一个论坛一个帖子全部回复列表
创建索引前 0.0160  0.11956  0.00409 使用了聚集索引
创建索引后: 0.0132  0.000924 0.0123  使用了普通索引

整体结论,建立了时间索引后,整个根据时间排序获得评论的速度增加了,当搜索的范围越小,
速度增加得越明显,当搜索到具体某一个帖子时,差异变小,但始终建立时间索引会更快.

另外发现,当你另外建立了时间索引,数据库会自动优化判断选择使用聚集索引还是普通的时间索引. 

使用索引的几点原则:
1、对小的数据表,使用索引并不能提高任何检索性能,因此不需对其创建索引
2、当用户要检索的字段的数据包含有很多数值或很多空值(null)时,为该字段创建索引,会大大提高检索效率。
3、当用户查询表中的数据时,如果查询结果包含的数据(行)较少,一般少于数据总数的25%时,使用索引会显著提高查询效率。反之,如果用户的查询操作,返回结果总是包含大量数据,那么索引的用处不大。
4、索引列在WHERE子句中应频繁使用。例如,在学生姓名字段上建了索引,但实际查询中并不是经常用姓名作为查询条件,该索引就没有发生作用。
5、先装数据,后建索引。对于大多数的表,总有一批初始数据需要装入。该原则是说,建立表后,先将这些初始数据装入表,然后再建索引,这样可以加快初始数据的录入。如果建表后就建索引,那么在输入初始数据时,每插入一个记录都要维护一次索引。当然,对于索引来说,早建和晚建都是允许的。
6、索引提交了数据检索的速度,但也降低了数据更新的速度。如果要对表中的数据进行大量更新时,最好先销毁索引,等数据更新完毕再创建索引,这样会提高效率。
7、索引要占用数据库空间。在设计数据库时,要把需要的索引空间考虑在内。
8、尽量把表和它的索引存放在不同的磁盘上,这样会提高查询速度。