在 SQL 服务器中的非聚集索引创建中是否有分区有什么区别?
What difference does it make to have or not to have the partition on a NONCLUSTERED index creation in SQL Server?
我有一个按列分隔的 table,我们称它为列“Col1”
此列可以具有以下值:1、2 或 3。
我们查看此 table 的所有查询都需要 WHERE Col1 = 1。
当我们在这个 table 上创建 NONCLUSTERED 索引时,这之间到底有什么区别:
CREATE NONCLUSTERED INDEX IX_Table1_City
ON dbo.table1 (Col1, City)
INCLUDE (County, Street)
还有这个:
CREATE NONCLUSTERED INDEX IX_Table1_City
ON dbo.table1 (Col1, City)
INCLUDE (County, Street)
ON [Partition_Name] (Col1)
两个索引都正常使用,所以我想了解为什么我需要第二个选项。
谢谢!
通常这两者都会产生分区索引,因为默认情况下,非聚集索引是在 table 的分区方案上创建的。
然而,如果您的 table 被其他列分区,在其他分区方案上,或者根本没有分区,则第二种语法将允许您创建分区的非聚集索引,而不是与主要 table.
对齐
我有一个按列分隔的 table,我们称它为列“Col1” 此列可以具有以下值:1、2 或 3。
我们查看此 table 的所有查询都需要 WHERE Col1 = 1。
当我们在这个 table 上创建 NONCLUSTERED 索引时,这之间到底有什么区别:
CREATE NONCLUSTERED INDEX IX_Table1_City
ON dbo.table1 (Col1, City)
INCLUDE (County, Street)
还有这个:
CREATE NONCLUSTERED INDEX IX_Table1_City
ON dbo.table1 (Col1, City)
INCLUDE (County, Street)
ON [Partition_Name] (Col1)
两个索引都正常使用,所以我想了解为什么我需要第二个选项。
谢谢!
通常这两者都会产生分区索引,因为默认情况下,非聚集索引是在 table 的分区方案上创建的。
然而,如果您的 table 被其他列分区,在其他分区方案上,或者根本没有分区,则第二种语法将允许您创建分区的非聚集索引,而不是与主要 table.
对齐