数据库技巧

  |  手机版

收藏网站

投稿QQ:1745232315

IT专家网,汇聚专业声音 解析IT潮流 IT专家网,汇聚专业声音 解析IT潮流

网络

专家视点在现场环球瞭望
IT专家网 > 数据库子站 > 数据库技巧

SQL优化-索引

作者:佚名出处:BLOG2008-06-24 11:44

  10、count(*)不比count(字段)慢

  某些资料上说:用*会统计所有列,显然要比一个世界的列名效率低。这种说法其实是没有根据的。我们来看:

  select count(*) from Tgongwen

  用时:1500毫秒

  select count(gid) from Tgongwen

  用时:1483毫秒

  select count(fariqi) from Tgongwen

  用时:3140毫秒

  select count(title) from Tgongwen

  用时:52050毫秒

  从以上可以看出,如果用count(*)和用count(主键)的速度是相当的,而count(*)却比其他任何除主键以外的字段汇总速度要快,而且字段越长,汇总的速度就越慢。我想,如果用count(*), SQL SERVER可能会自动查找最小字段来汇总的。当然,如果您直接写count(主键)将会来的更直接些。

  11、order by按聚集索引列排序效率最高

  我们来看:(gid是主键,fariqi是聚合索引列)

  select top 10000 gid,fariqi,reader,title from tgongwen

  用时:196 毫秒。 扫描计数 1,逻辑读 289 次,物理读 1 次,预读 1527 次。

  select top 10000 gid,fariqi,reader,title from tgongwen order by gid asc

  用时:4720毫秒。 扫描计数 1,逻辑读 41956 次,物理读 0 次,预读 1287 次。

  select top 10000 gid,fariqi,reader,title from tgongwen order by gid desc

  用时:4736毫秒。 扫描计数 1,逻辑读 55350 次,物理读 10 次,预读 775 次。

  select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi asc

  用时:173毫秒。 扫描计数 1,逻辑读 290 次,物理读 0 次,预读 0 次。

  select top 10000 gid,fariqi,reader,title from tgongwen order by fariqi desc

  用时:156毫秒。 扫描计数 1,逻辑读 289 次,物理读 0 次,预读 0 次。

  从以上我们可以看出,不排序的速度以及逻辑读次数都是和“order by 聚集索引列” 的速度是相当的,但这些都比“order by 非聚集索引列”的查询速度是快得多的。

  同时,按照某个字段进行排序的时候,无论是正序还是倒序,速度是基本相当的。

相关文章

关键词:IT技术 SQL语言 技巧

责任编辑:李书琴

专题推荐

原创文章

微博互动

白皮书

网警备案