聚集索引的叶节点就是最终的数据节点,而非聚集索引的叶节仍然是索引节点,但它有一个指向最终数据的指针。
1. 聚集索引一个表只能有一个,而非聚集索引一个表可以存在多个。
2. 聚集索引存储记录是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储并不连续。
一个学生表student,里面是学生号id,学生姓名,学生所在城市ID,学生成绩(总分)。
聚集索引可以创建在任何一列你想创建的字段上,这是从理论上讲,实际情况并不能随便指定,否则在性能上会是恶梦。
如果想查询学分在60-90之间的学生的学分以及姓名,在学分上创建聚集索引是否是最优的呢?
既然只输出两列,我们可以在学分以及学生姓名上创建联合非聚集索引,此时的索引所存储的内容就是最终输出的数据,这种索引在比以学分为聚集索引做查询性能更好。
聚集索引:表记录中的排列顺序与索引的排列顺序相同,查询速度快,但是插入速度慢。
适用范围:此列包含有限数目的不同值,查询返回区间数据,返回某值相同的大量结果集。
非聚集索引:
适用范围:此列包含了大量数目不同的值,查询结果返回的是少量的结果集,order by字句中使用了该列。