更新时间:2022-09-13 18:52:28
参照博客某社区600万用户数据导入MYSQL、MSSQL、Oracle数据库方法中“ 3.3为数据表添加年龄列(2012-6-13)”提到的方法创建测试数据库。
然后执行query1,统计年龄在20到30之间的人数。
set autotrace on select count(*) from csdnuser3 where age between 20 and 30;
查询与统计结果如下
再次执行query1,查询与统计结果如下
对照上述两次查询,我们可以发现:
我们查询所有年龄在20到30之间的人员,执行如下查询语句query2
autotrace traceonly select * from csdnuser3 where age between 20 and 30;
查询统计结果如下:
在执行一次query2
查询统计结果如下:
对比上述两次查询,我们可以发现:
因为查询的数据已经在缓存中,所以physical reads=0
consistent gets相对于第一次的142441,第二次为142322,略微有些想将。
在age字段上添加索引
--创建索引 create index IX_CSDNUSER3_AGE on CSDNUSER3(AGE);
执行query1以后,查询分析结果如下:
再执行一次query1,查询分析结果如下:
对比上述两次查询可以发现:
执行query2以后,查询分析结果如下:
再次执行query2,查询分析结果如下:
对比上述两次查询,我们可以发现:
为什么要在主键上加索引,这是因为表连接的时候效率提高。主键是cluster索引,而其他为非cluster索引。
本文转自xwdreamer博客园博客,原文链接:http://www.cnblogs.com/xwdreamer/archive/2012/06/13/2547817.html,如需转载请自行联系原作者