Ich habe einen Bericht, der eine lange Zeit zur Ausführung benötigte. Ich habe den Datenbank-Engine-Tuning-Advisor ausgeführt, und eine der Empfehlungen bestand darin, zwei Indizes zu erstellen. Ich bemerkte jedoch, dass die Indizes die gleichen Spalten waren, aber in verschiedenen Ordnungen. HierSQL Server 2005 Indexierung derselben Spalten in anderer Reihenfolge
ist die Tabelle:
---Locations---
| *LocationID |
| Code |
| ...more... |
| DivisionID |
| RegionID |
---------------
und die Empfehlung war diese 2-Indizes
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
Warum die SQL Server benötigen würde hinzufügen, diese 3 Spalten Indizes in unterschiedlicher Reihenfolge haben, wenn sie nur für eine innere Verbindung verwendet?
SELECT UserID, LocationID FROM [User] u INNER JOIN [Locations] l ON u.LocationID = l.LocationID