我有一份需要很长时间才能执行的报告。我运行了数据库引擎调优顾问,其中一项建议是创建 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/