聚簇索引与非聚簇索引

建立索引的目的是加快对表中记录的查找排序。付出的代价:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。 索引分为聚簇索引非聚簇索引两种。


聚簇索引

聚簇索引确定表中数据的物理顺序。

聚簇索引类似于电话簿,后者按姓氏排列数据。由于聚簇索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚簇索引。但该索引可以包含多个列(组合索引)。

  1. { ... } :聚簇索引对于那些经常要搜索范围值的列特别有效。使用聚簇索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。
  2. <<<<:如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚簇(物理排序),避免每次查询该列时都进行排序,从而节省成本。
  3. .......。:大多数表都应该有聚簇索引或使用分区来降低对表尾页的竞争,在一个高事务的环境中,对最后一页的封锁严重影响系统的吞吐量。
  4. }->[ :在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、<、<=、>、>=)或使用group by或order by的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行保证物理上毗连在一起而不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。
  5. — ^ — :   在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,否则会经常引起封锁冲突。
  6. —^—X—:在聚簇索引中不要包含经常修改的列,因为码值修改后,数据行必须移动到新的位置。
  7. 选择聚簇索引应基于where子句
  8. 连接操作的类型。
非聚簇索引
非聚簇索引,叶级页指向表中的记录,记录的物理顺序与逻辑顺序没有必然的联系。非聚簇索引则更象书的标准索引表,索引表中的顺序通常与实际的页码顺序是不一致的。
一个表可以有不止一个非聚簇索引。
  1. 非聚簇索引需要大量的硬盘空间和内存
  2. 虽然非聚簇索引可以提高从表中取数据的速度
  3. 它也会降低向表中插入和更新数据的速度每当你改变了一个建立了非聚簇索引的表中的数据时,必须同时更新索引。
另外,还要考虑这些问题:
  1、索引需要使用多少空间
  2、合适的列是否稳定。
  3、索引键是如何选择的,扫描效果是否更佳。
  4、是否有许多重复值。如果有许多重复值建议使用聚簇索引。

非聚簇索引常被用在以下情况:
  1、某列常用于集合函数(如Sum,....)
  2、某列常用于join,order by,group by
  3、查寻出的数据不超过表中数据量的20%

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值