Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Aggiunta di un INDEX a un CTE

Ho avuto la stessa esigenza. Non è possibile aggiungere indici a un CTE. Tuttavia, nel CTE seleziona l'aggiunta di un ORDER BY la clausola sui campi uniti ha ridotto il tempo di esecuzione da 20 minuti o più a meno di 10 secondi.

(Devi anche AGGIUNGERE SELECT TOP 100 PERCENT per consentire un ORDER BY in una selezione CTE.)

[modifica per aggiungere una citazione parafrasata da un commento qui sotto]:
Se hai DISTINCT nel CTE, TOP 100 PERCENT non funziona. Questo metodo cheater è sempre disponibile:senza bisogno di TOP nella selezione, modifica l'istruzione ORDER BY per leggere:
ORDER BY [Blah] OFFSET 0 ROWS