1. 聚簇索引和非聚簇索引的概念
① 聚簇索引:将数据存储与索引放到了一起,索引结构的叶子结点保存了行数据
- 聚集索引决定了数据的物理顺序,索引的顺序就是数据存放的顺序。一张表只有一个聚集索引
- 索引是与表或视图关联的磁盘上结构可以加快检索行的速度
- 聚集索引和数据在物理上是按顺序排列在数据页上的,索引和数据在物理上都是顺序连续, 一旦找到第一个键值的行,后面都将是连在一起,不必再进一步搜索,避免大范围扫描,提高查询速度。
② 非聚簇索引: 将数据与索引分开存储,索引结构的叶子结点指向了数据对应的位置
2. 什么情况下可以使用聚集索引
① 使用运算符,between
② 返回大型结果集
③ 使用 join
④ 列经常被分组排序,使用order by 或者group by
3. 什么情况不适用
① 频繁更改的列:表经常进行大量数据的插入、删除或更新操作,因为聚簇索引改变了数据的物理存储顺序,所以对表的频繁修改可能会导致大量的数据移动,从而降低性能。
② 宽键,若干列或若干大型列的组合
③ 表中的数据量非常大:对于非常大的表,创建和维护聚簇索引可能会消耗大量的存储空间和计算资源。