sql 什么时候用聚集索引和非聚集索引
发布网友
发布时间:2022-04-10 07:10
我来回答
共1个回答
热心网友
时间:2022-04-10 08:39
1
聚集索引:该索引中键值的逻辑顺序决定了表中相应行的物理顺序。
聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。
2
聚集索引使用注意事项
定义聚集索引键时使用的列越少越好。
•
包含大量非重复值的列。
.•
使用下列运算符返回一个范围值的查询:BETWEEN、>、>=、<
和
<=。
•
被连续访问的列。
•
回大型结果集的查询。
•
经常被使用联接或
GROUP
BY
子句的查询访问的列;一般来说,这些是外键列。对
ORDER
BY
或
GROUP
BY
子句中指定的列进行索引,可以使
SQL
Server
不必对数据进行排序,因为这些行已经排序。这样可以提高查询性能。
•
OLTP
类型的应用程序,这些程序要求进行非常快速的单行查找(一般通过主键)。应在主键上创建聚集索引。
3
聚集索引不适用于:
•
频繁更改的列
。这将导致整行移动(因为
SQL
Server
必须按物理顺序保留行中的数据值)。这一点要特别注意,因为在大数据量事务处理系统中数据是易失的。
•
宽键
。来自聚集索引的键值由所有非聚集索引作为查找键使用,因此存储在每个非聚集索引的叶条目内。
4
非聚集索引:数据存储在一个地方,索引存储在另一个地方,索引带有指针指向数据的存储位置。
非聚集索引中的项目按索引键值的顺序存储,而表中的信息按另一种顺序存储(这可以由聚集索引规定)。对于非聚集索引,可以为在表非聚集索引中查找数据时常
用的每个列创建一个非聚集索引。有些书籍包含多个索引。例如,一本介绍园艺的书可能会包含一个植物通俗名称索引,和一个植物学名索引