《SQL优化-索引》总结

Posted on 2009-03-17 09:12  Leon0812  阅读(288)  评论(0)    收藏  举报

 

原文:《SQL优化-索引》http://database.ctocio.com.cn/tips/272/7588272.shtml

 

1.聚集索引(clustered index,也称聚类索引、簇集索引),就是数据排列的物理结构顺序。好比查新华字典,知道拼音直接查字,声母b的一定是排在a的后面,一本字典有且只有这一种排列顺序。所以说聚集索引一张表只能有一个。

2.非聚集索引(nonclustered index,也称非聚类索引、非簇集索引),就是数据排列的逻辑顺序。好比知道字的结构去查该字的拼音,通过偏旁部首查到的字对应的实际页数是不同的,如“把、插 ”两个都是提手旁,假设排在一起,实际"把"字是第50页,而"插"字却是在100页。非聚集索引可以有多个。

3.何时使用聚集索引或非聚集索引(很重要)。

 

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

4.索引使用的误区

  • 主键就是聚集索引。根据上面第三点的使用条件,可以推知并非一定设置主键为聚集索引为最优。
  • 只要建立索引就能显著提高查询速度。还是要具体看需要经常排序的字段。
  • count(*)比count(字段)慢。count(*)和用count(主键)的速度是相当的,而count(*)却比其他任何除主键以外的字段汇总速度要快,而且字段越长,汇总的速度就越慢。

5.一些有用的技巧

  • order by按聚集索引列排序效率最高
  • 聚集索引建立在:

      (1)最频繁使用的、用以缩小查询范围的字段上;
         (2)最频繁使用的、需要排序的字段上。

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3