索引

 聚集索引和非聚集索引,常规了,看下面的两张图

     

1)聚集索引叶子节点就是实际数据(数据页),索引指向的是数据页,索引页每一行记录了数据页和聚集索引字段在该数据页的范围

若where 后面的字段不包含创建聚集索引时的第一个字段,并且包含在创建聚集索引时的字段列中,进行索引扫描

若where 后面要查找的字段是建立聚集索引时的第一个字段,或者就是创建聚集索引时的字段列,进行索引查找

否则全表扫描

2)非聚集索引叶子还是索引,每索引行都有索引列的值和数据行地址,有多少数据行就有多少索引行

若where 后面要查找的字段不是建立非聚集索引时的第一个字段,并且包含在创建非聚集索引时的字段列中,这个字段已经保存在非聚集索引的索引页里了,进行索引扫描

若where 后面要查找的字段是建立非聚集索引时的第一个字段,或者就是创建非聚集索引时的字段列,进行索引查找

否则全表扫描

 

 

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

 

 

 

参考文章:

1. SQLSERVER聚集索引与非聚集索引的再次研究(上)

2. Oracle B-tree 索引结构、如何存储及其优势

 

posted @ 2016-09-18 10:05  未来的那啥  阅读(202)  评论(0编辑  收藏  举报