集合索引和非集合索引的使用情况

2009年4月16日 | 分类: 数据库技术 | 标签: , ,

下面的表总结了何时使用聚集索引或非聚集索引(很重要):

动作描述 使用聚集索引 使用非聚集索引
列经常被分组排序
返回某范围内的数据 不应
一个或极少不同值 不应 不应
小数目的不同值 不应
大数目的不同值 不应
频繁更新的列 不应
外键列
主键列
频繁修改索引列 不应

创建索引的规则:

  1. 聚合索引最重要,但不应该是作为主键的ID
  2. 时间列最为聚合索引,精确到秒不影响
  3. 符合聚合索引,仅使用第二位置的字段查询,没意义

一些实际应用

  1. Like语句是否属于SARG取决于所使用的通配符的类型
  2. or 会引起全表扫描               tid=2 or tid=3
  3. 非操作符、函数引起的不满足SARG形式的语句   ABS(价格)<5000                  Name like ‘%三’
  4. IN 的作用相当与OR    tid in (2,3)     tid=2 or tid=3
  5. 尽量少用NOT
  6. exists 和 in 的执行效率是一样的
  7. 用函数charindex()和前面加通配符%的LIKE执行效率一样
  8. union并不绝对比or的执行效率高                 如果or两边的查询列是一样的话,那么用union则反倒和用or的执行速度差很多
  9. 字段提取要按照“需多少、提多少”的原则,避免“select *”
  10. count(*)不比count(字段)慢
  11. order by按聚集索引列排序效率最高
  12. 高效的TOP
anyShare分享到:
          
目前还没有任何评论.