SQL Server 索引优化全解析
1. 非聚集索引结构
非聚集索引结构与聚集索引结构非常相似,同样有三个主要级别:根级别、叶级别和中间级别。二者的主要区别在于叶级别存储的数据以及结构内的数据行定位器。非聚集索引的叶级别页面包含对数据页面或索引键的引用,而非实际数据。
例如,以名字作为索引键的非聚集索引,其根级别包含名字、指向下一页的指针和数据行定位器;中间级别将名字范围均匀划分,也包含下一页和数据行定位器;叶级别页面包含键(即名字)。若基础表按聚集索引组织,非聚集索引的叶级别页面将包含聚集索引键(也称为数据行定位器);若基础表是堆表,叶级别页面将包含指向堆中数据页面的指针。
2. 堆表结构
堆表与聚集和非聚集索引不同,其存储的数据没有结构。堆表中的数据通过为对象分配的索引分配映射(IAM)页面链接,内部系统对象指向存储数据的第一个 IAM 页面。由于堆表缺乏顺序,SQL Server 必须扫描整个堆的每个页面,以确定哪些数据符合给定查询的条件,因此对堆表进行表扫描通常效率低下,应尽量避免,尤其是在大型表上。
3. 约束创建的索引
3.1 主键索引
“主键索引”这个术语常被非数据库管理员使用,一般来说,人们提到主键索引时,实际上指的是为表指定主键后创建的索引。主键可以创建聚集或非聚集索引,强制键值的唯一性,且不允许为空值。当有人说主键索引是用于检索数据的主要索引时,可默认认同,因为聚集索引会决定数据的顺序并经常被使用。
3.2 唯一索引
唯一索引可以是聚集或非聚集索引,它能为索引提供一个额外属性,强制键列之间的唯一性。表可以有多个唯一索引,且允
超级会员免费看
订阅专栏 解锁全文
5057

被折叠的 条评论
为什么被折叠?



