sql >> Database >  >> RDS >> Sqlserver

Waarom is deze CTE zo veel langzamer dan het gebruik van tijdelijke tabellen?

Zoals je kunt zien in het queryplan, behoudt de engine zich bij CTE's het recht voor om ze in principe als een lookup toe te passen, zelfs als je een join wilt.

Als het niet zeker genoeg is, kan het het hele ding van tevoren onafhankelijk uitvoeren, in wezen een tijdelijke tabel genereren ... laten we het maar één keer uitvoeren voor elke rij.

Dit is perfect voor de recursiequery's die ze als magie kunnen doen.

Maar je ziet - in de geneste Nested Loops - waar het vreselijk mis kan gaan.
Je vindt het antwoord al zelf door de echte tijdelijke tabel te proberen.



  1. Hoe programmeer je een stemsysteem?

  2. Selecteer clausule binnen pl/sql functie retourneer verkeerde waarde

  3. Laravel dynamische vervolgkeuzelijst land en staat

  4. kan niet te groot html-bestand laden bij het pakken