Ich habe eine Tabelle, deren Definition sieht wie folgt aus:SQL Server Datenbank-Tuning Advisor schlägt vorhandenen gruppierten Index
CREATE TABLE Budget_Cost_Centers
(
CostCenterIDX INT NOT NULL,
Name VARCHAR(100) NOT NULL,
...
CONSTRAINT PK_Budget_Cost_Centers
PRIMARY KEY CLUSTERED (CostCenterIDX ASC)
);
(einige Spalten wurden weggelassen, weil sie nicht relevant sind)
ich jetzt die Datenbank laufen Tuning Advisor für eine Abfrage gegen diese Tabelle und schlägt folgendes vor:
CREATE NONCLUSTERED INDEX [_dta_index_Budget_Cost_Centers_5_1079674894__K1]
ON [dbo].[Budget_Cost_Centers] ([COSTCENTERIDX] ASC)
WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY]
Das ist offensichtlich das gleiche wie der vorhandene Primärschlüssel. Irgendeine Idee, warum es das vorschlagen würde? Ich versuche sicherzustellen, dass ich nicht vergesse, wie SQL Server funktioniert, im Gegensatz zum Advisor, der etwas lächerliches vorschlägt, weil das nur die Grenzen der automatisierten Tuning-Analyse sind.
Mehr Info: brach ich die Abfrage nach unten, die diese Empfehlung auf das Wesentliche herstellte:
select
d.PhaseIDX,
sum(d.YTDActual) YTDActual
from
Budget_Cost_Centers cc
join
Budget_Cost_Centers mc on cc.MasterCostCenteridx = mc.CostCenterIDX
join
Budget_Detail d on cc.CostCenterIDX= d.CostCenterIDX
group by
d.PhaseIDX
Die Tabelle Selbstverweise und die Abfrage Autor trat es sich um die filtern erfasst nur diejenigen, die diese Referenz enthalten. Ändern der Abfrage auf die folgenden vergleichbaren Ergebnissen in den Berater nicht machen mehr die Empfehlung:
select
d.PhaseIDX,
sum(d.YTDActual) YTDActual
from
Budget_Cost_Centers cc
join
Budget_Detail d on cc.CostCenterIDX = d.CostCenterIDX
where
cc.MasterCostCenterIDX is not null
group by
d.PhaseIDX
der Ausführungsplan mit dem ursprünglichen SQL Hier wird:
Dieser ist definitiv ein Puzzler. Das einzige, was mir einfällt, ist, ob der Primärschlüssel "SORT_IN_TEMPDB = ON" gesetzt hat. In diesem Fall könnte es Fälle geben, in denen der andere Schlüssel effizienter ist ... aber das scheint immer noch seltsam. –
Nie so etwas gesehen. Haben Sie gesehen, ob Ihr Ausführungsplan den vorhandenen Index verwendet hat? Durch die Veröffentlichung des eigentlichen EP können andere feststellen, was gerade passiert. –
Ich habe mehr Informationen, einschließlich Ausführungsplan, oben hinzugefügt. – John