聚集索引和非聚集索引

聚集索引中,数据记录的组织是按照索引中的键值连续存储的,即具有相同键值的记录存储在一起,
非聚集索引则记录的存储是随意的。

比如有模式R(A,B),数据记录有{(1,1), (2,2),(3,2), (4,1),(5,3),(6,2), (7,1)},
如果在B属性上创建聚集索引,则记录按照如下方式组织:
  (1,1), (4,1), (7,1),(2,2),(3,2), (6,2), (5,3),
索引项 1 1 1 2 2 2 3
指针 0 3 6
索引结构为<索引项,指针>,则索引内容为<1,0>,<2,3>,<3,6>
这样查询B=2是就可以连续地将记录(2,2),(3,2), (6,2)取得

而如果是非聚集索引则不是按照索引属性排列元组,假设按上面的的顺序排列
(1,1), (2,2),(3,2), (4,1),(5,3),(6,2), (7,1)
索引项 1 2 2 1 3 2 1
指针们 0 1 2 3 4 5 6
索引内容为<1,{0,3,6}>,<2,{1,2,5}>,<3,{4}>
查询是需要根据指针地址逐一取出记录
原文地址:https://www.cnblogs.com/la-isla-bonita/p/3630436.html