Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Hinzufügen eines INDEX zu einem CTE

Ich hatte die gleiche Anforderung. Indizes können nicht zu einem CTE hinzugefügt werden. Wählen Sie jedoch im CTE das Hinzufügen eines ORDER BY aus Klausel zu den verbundenen Feldern reduzierte die Ausführungszeit von 20 Minuten oder mehr auf unter 10 Sekunden.

(Sie müssen auch SELECT TOP 100 PERCENT HINZUFÜGEN, um ein ORDER BY in einer CTE-Auswahl zuzulassen.)

[Bearbeiten, um ein paraphrasiertes Zitat aus einem Kommentar unten hinzuzufügen]:
Wenn Sie DISTINCT im CTE haben, dann funktioniert TOP 100 PERCENT nicht. Diese Cheater-Methode ist immer verfügbar:Ohne überhaupt TOP in der Auswahl zu benötigen, ändern Sie die ORDER BY-Anweisung wie folgt:
ORDER BY [Blah] OFFSET 0 ROWS