【发布时间】:2017-06-07 01:56:54
【问题描述】:
我从来没有真正理解这两个索引之间的区别,谁能解释一下区别是什么(性能方面,索引结构在数据库中的样子,存储方面等)?
收录索引
CREATE NONCLUSTERED INDEX IX_Address_PostalCode
ON Person.Address (PostalCode)
INCLUDE (AddressLine1, AddressLine2, City, StateProvinceID);
“正常”索引
CREATE NONCLUSTERED INDEX IX_Address_PostalCode
ON Person.Address (PostalCode, AddressLine1, AddressLine2, City, StateProvinceID);
【问题讨论】:
-
文档中有哪些不明白的地方? msdn.microsoft.com/en-us/library/ms190806.aspx.
-
鉴于文档,我基本上可以为我的所有查询创建包含索引,从而减少解释器进行任何表扫描的需要。我想这有一些缺点,我正在寻找一些澄清。
-
。 .这些被称为相关查询的覆盖索引。它们可以极大地提高 select 查询的性能。它们确实需要更多空间并减慢数据修改速度。
-
我想我想要一些关于何时使用包含列以及何时避免使用它们的最佳实践指南 + 一些关于存储方面和性能的一般信息
-
在存在更多索引的情况下,更新变得更加昂贵,因为当列值更改时,SQL 必须更新它的所有副本。引用列的索引越多,要更新的副本就越多。
标签: sql sql-server tsql database-indexes sql-server-performance