sql-server - 聚集索引上的列顺序

标签 sql-server sql-server-2008-r2

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
SQL Server Clustered Index - Order of Index Question



我知道聚集索引中的列顺序很重要。

我计划在 where 子句中始终涉及的 3 列上添加聚集索引 - 一个 int、bit 和 datetimeoffset 列。此外,datetimeoffset 列存储增量值。

将 datetimeoffset 列作为聚集索引中的第一个列是否有意义?欣赏它。

最佳答案

列顺序对所有索引都很重要,而不仅仅是聚集索引。

最佳列顺序由多个因素决定:

您是否会仅使用其中一列而不使用其他列来查询此表?如果您的索引定义为 ColumnA, ColumnB ...然后您执行一个仅使用 ColumnB 过滤的查询,则该索引无法使用,因为 ColumnB不在指数前沿。

每列中的值的选择性如何?被索引的列中包含的不同值越多,索引就越有效。这也是您可能不想包含 bit 的原因。索引中的列,因为只有 2 个可能的值。更具选择性的列更适合处于领先地位。

关于sql-server - 聚集索引上的列顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13994971/

相关文章:

sql - 使用 Case 语句比较四列并将最早的日期添加到新列

sql-server - 我可以将 Entity Framework 与非关系 SQL Server 数据库一起使用吗?

sql-server - T-SQL : I'm trying to get the latest row of a column but also the sum of another column

sql-server - 什么时候不能使用方括号?

sql-server - SQL Server 2008 R2 : geometry data type cannot be selected as DISTINCT because it is not comparable

sql - 我如何加入 msdb.dbo.sysoperators 和 msdb.dbo.sysalerts?

sql - 如何识别连续的工作日期?

sql-server - 对 SQL Server 表进行非规范化

sql-server - 将列从 NVARCHAR 更改为 BINARY

tsql - 使用 T-SQL 创建表时,为什么最后一个字段后面的逗号不重要?