Ich habe eine Abfrage:So erstellen Index für CTE
With Cte as (some code)
Select *
from Cte
order by id
Kann ich einen Index für diese CTE erstellen?
Ich benutze ms SQL Server 2005
Vielen Dank.
Ich habe eine Abfrage:So erstellen Index für CTE
With Cte as (some code)
Select *
from Cte
order by id
Kann ich einen Index für diese CTE erstellen?
Ich benutze ms SQL Server 2005
Vielen Dank.
Wie oben erwähnt, können Indizes zu einem CTE nicht hinzugefügt werden.
Allerdings kann das Hinzufügen einer ORDER BY-Klausel zu den verbundenen Feldern im CTE die Ausführungszeit reduzieren.
Sie müssen auch SELECT TOP 100 PROZENT HINZUFÜGEN, um eine ORDER BY in einer CTE-Auswahl zu ermöglichen.
Sie könnten eine materialisierte/indizierte Sicht als Basiswert anstelle eines CTE verwenden. Sie müssen die DDL im Voraus erstellen. Wenn die Abfrageleistung jedoch wichtig ist, kann dies hilfreich sein. Beachten Sie auch, dass Sie aufgrund der Schemabinding-Anforderung die zugrunde liegenden Tabellen nicht ändern können.
Sie können den Index nicht zu cte hinzufügen. http://StackOverflow.com/Questions/3995958/Adding-an-Index-to-Acte –
Sie können nicht, CTE ist wie eine dynamische Ansicht innerhalb der Anweisung. Sie müssen wahrscheinlich eine temporäre Tabelle erstellen und diese indexieren. –
CTE erstellt keine temporäre Tabelle oder etwas, das indiziert werden kann. Es verwendet die Indizes der Tabelle während ihrer Ausführung. –