sql >> Databasteknik >  >> RDS >> Sqlserver

Lägga till ett INDEX till en CTE

Jag har haft samma krav. Index kan inte läggas till en CTE. Men i CTE väljer du att lägga till en ORDER BY klausulen på de sammanfogade fälten minskade exekveringstiden från 20 minuter eller mer till under 10 sekunder.

(Du måste också ADD SELECT TOP 100 PROCENT för att tillåta en ORDER BY i ett CTE-val.)

[redigera för att lägga till omskrivet citat från en kommentar nedan]:
Om du har DISTINCT i CTE så fungerar TOP 100 PROCENT inte. Den här fuskmetoden är alltid tillgänglig:utan att behöva TOP alls i markeringen, ändra ORDER BY-satsen så att den lyder:
ORDER BY [Blah] OFFSET 0 ROWS



  1. Fatalt fel:anrop till en medlemsfunktion fetch_array() på boolean

  2. MySQL:UNIK, men DEFAULT NULL - tillåts genom att skapa en tabell. Mer än 1 NULL är tillåtet att infoga. Varför?

  3. Vilka är de 6 huvudkomponenterna i Microsoft Access?

  4. Enkelt Postgresql-uttalande - kolumnnamnet finns inte