Sqlserver 高级篇 非聚集索引原理
原理
最好看一下 这些章节帮助理解
非聚集索引 非聚集索引是数据库按照 用户所设置的索引列 创建了多个排序好的索引页 每次查找 都遍历索引页 毕竟 遍历索引页 比直接遍历所有数据要快
非聚集索引可以有多个
唯一索引 (我们设置好的唯一约束)也是非聚集索引 只不过多了一个唯一属性
看一个图 来解释 非聚集索引 查询数据原理
数据库查询用的是B树算法 就像大树一样 从树干 到树枝到各种树叶 成扩散状
这一部分 我理解就是非聚集索引 所创建的 页
我们通过SQL 创建一个非聚集索引 比如 名字 数据库就会创建很多按照名字排序的页
我们详细看一下 页里面的内容
前面是非聚集索引键 (名字)后面 4:706:01 的意思是在ID为4数据库文件里 的706页里的01行数据
从数据查询语句开始 我们看一下 查询过程
如果 sql是 select * from ST where Name = 'Marthin' and 执行
首先 数据库会去查询 SYSindexes 看indid里的字段是什么 1是聚集索引 0 是无索引 别的就是非聚集索引比如(2,3,4,5,6....)
一看是2
就知道是非聚集索引
去查第一个索引页 找到Marthin 看存储在 Page 28 然后看 Marthin 存在page61页
再去遍历page61页 找到所在页信息
在去page706 找到信息 显示出来
这就是 非聚集索引 查询的一个过程
非聚集索引创建
1)语句创建
Create nonclustered index... on...
non_Name (索引名)
TStudent(Sname)(表(列))
Create nonclustered index non_Name on TStudent(Sname)
2)Slqserver 工具创建
右击列 选择 索引/键
表的 索引就会有一个Name的非聚集索引