database - SQL Server 2005 以不同的顺序索引相同的列

标签 database sql-server-2005 indexing

我有一份需要很长时间才能执行的报告。我运行了数据库引擎调优顾问,其中一项建议是创建 2 个索引。但是,我注意到索引是相同的列,但顺序不同。

这是表格:

---Locations---
| *LocationID |
| Code        |
| ...more...  |
| DivisionID  |
| RegionID    |
---------------

建议添加这两个索引

CREATE NONCLUSTERED INDEX [IX_Locations_Region_Loc_Div] ON [dbo].[Locations] 
(
    [RegionID] ASC,
    [LocationID] ASC,
    [DivisionID] ASC
)
INCLUDE ( [Code]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [IX_Locations_Loc_Reg_Div] ON [dbo].[Locations] 
(
    [LocationID] ASC,
    [RegionID] ASC,
    [DivisionID] ASC
)
INCLUDE ( [Code]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
GO

当 SQL Server 只用于内部连接时,为什么 SQL Server 需要以不同的顺序排列这 3 个列的索引?

SELECT UserID, LocationID FROM [User] u INNER JOIN [Locations] l ON u.LocationID = l.LocationID

最佳答案

它不会用于您包含的 SQL。它必须考虑其他查询才能做出该推荐。

关于database - SQL Server 2005 以不同的顺序索引相同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829945/

相关文章:

sql-server - SQL Server : Geography search performance - query nearest stores

java - 如何使用 Hibernate 作为持久性提供程序在 JPA 中添加 "outer join conditions with ON clause"?

sql-server-2005 - 为什么 Microsoft 在 SQL Server 2005 中的表上提供了 2 个不同的选项来创建唯一索引?

html - java.sql.SQLException : [Microsoft][ODBC Driver Manager] Invalid cursor state while inserting values into database 异常

indexing - Tinkerpop API 在从 titan 检索数据时不使用混合 Elasticsearch 索引

r - 如何用值向量填充索引矩阵

python - 用三个表连接一对多?

c# - PetaPoco - 插入数据库时​​的事务隔离级别

c# - 尝试将密码存储到数据库

.net - 在 SQL Server 中共享来自单个数据库的程序集(模拟 GAC)