聚集索引和非聚集索引

聚集索引和非聚集索引

1 聚集索引:  

聚集索引,表中的数据存储位置,根据索引的排序进行实际存储,因此效率是相当高的。因为聚集索引决定了表中数据行的存储位置。 一个表不可能有两个或以上的聚集索引,如果一个表中已经有一个聚集索引,那么这个表中其他的索引都将是非聚集索引。

       表排列顺序:表记录的排列顺序与索引的排列顺序一致。 

       查询速度快:因为一旦具有第一个索引值的纪录被找到,具有连续索引值的记录也一定物理的紧跟其后。

       聚集索引的缺点:对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度   

使用场合: 

a.此列包含有限数目的不同值;  

b.查询的结果返回一个区间的值;  

c.查询的结果返回某值相同的大量结果集。 

2 非聚集索引 

表排列顺序:物理顺序和索引的顺序不一致 

索引重组:非聚集索引比聚集索引层次多,添加记录不会引起数据顺序的重组 

使用场合: 

a.此列包含了大量数目不同的值;  

b.查询的结束返回的是少量的结果集;  

c.order by 子句中使用了该列。

3】举例说明聚集索引和非聚集索引的区别 

create clustered idx_name on table(name)

create idx_no on table(no)

表中实际的数据存储方式为

table

no       name           remark

1         a

3         a

2         b

5         b

4         c        xxc1

6         c        xxc2

聚集索引数据页

建值地址 健值 数据地址

0001    a     XXXX

0002    b     XXXX

0003    c     XXc1

非聚集索引数据页

健值 聚集建值 聚集地址

1     a           0001

2     b           0002

3     a           0001

4     c           0003

5     b           0002

6     c           0003

select * from table where no =4

(1)先根据非聚集索引进行索引查找,找到聚集健值c

(2)然后根据c值,在聚集索引中查找到数据地址XXc1

(3)然后从xxc1开始比较no = 4的数据行,找后返回

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值