原理
最好看一下 这些章节帮助理解
非聚集索引 非聚集索引是数据库按照 用户所设置的索引列 创建了多个排序好的索引页 每次查找 都遍历索引页 毕竟 遍历索引页 比直接遍历所有数据要快
非聚集索引可以有多个
唯一索引 (我们设置好的唯一约束)也是非聚集索引 只不过多了一个唯一属性
看一个图 来解释 非聚集索引 查询数据原理
数据库查询用的是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的非聚集索引