转:
SQL Server 索引结构及其使用(一)
SQL Server 索引结构及其使用(二)
SQL Server 索引结构及其使用(三)
SQL Server 索引结构及其使用(四)
相关笔记:
1,索引的基本概念
文件系统及数据库系统普遍采用B-/+Tree作为索引结构。这也是创建或重建索引会花费很长的时间。而且时间久了,索引碎片化就必须重建索引。
索引键值的逻辑顺序与索引所服务的表中相应行的物理顺序相同的索引,被称为聚集索引,反之为非聚集索引,索引一般使用二叉树排序索引键值的,聚集索引的索引值是直接指向数据表对应元组的,而非聚集索引的索引值仍会指向下一个索引数据块,并不直接指向元组,因为还有一层索引进行重定向,所以非聚集索引可以拥有不同的键值排序而拥有多个不同的索引。而聚集索引因为与表的元组物理顺序一一对应,所以只有一种排序,即一个数据表只有一个聚集索引。
例如:
聚集索引:字典中的A~Z;
非聚集索引:字典中的“部首目录”和“检字表”。
2,何时使用聚集索引和非聚集索引(很重要)
描述 | 聚集索引 | 非聚集索引 |
列经常被分组排序 | 应 | 应 |
返回某范围内的数据 | 应 | 不应 |
一个或极少不同的值 | 不应 | 不应 |
小数目的不同值 | 应 | 不应 |
大数目的不同值 | 不应 | 应 |
频繁更新的列 | 不应 | 应 |
外键列 | 应 | 应 |
主键列 | 应 | 应 |
频繁修改索引列 | 不应 | 应 |
3,