sql >> Database >  >> RDS >> Sqlserver

SQL 2005 CTE versus TEMP-tabel Prestaties bij gebruik in samenvoegingen van andere tabellen

CTE is slechts een alias voor de zoekopdracht.

Het kan (of niet) elke keer dat het wordt gebruikt opnieuw worden uitgevoerd.

Er is geen schone manier om CTE . te forceren materialisatie in SQL Server (zoals Oracle's /*+ MATERIALIZE */ ), en je moet dit soort trucjes doen:

CTE kan de prestaties verbeteren indien gebruikt in plannen die slechts één evaluatie vereisen (zoals HASH JOIN , MERGE JOIN enz.).

In deze scenario's wordt de hashtabel rechtstreeks vanuit de CTE . gebouwd , terwijl het gebruik van de tijdelijke tabel vereist dat de CTE . wordt geëvalueerd , trek de resultaten naar de tijdelijke tabel en lees de tijdelijke tabel opnieuw.



  1. Er kan maar één automatische kolom zijn

  2. mysql> databasetest maken; ERROR 1006 (HY000):Kan database 'test' niet maken (errno:2)

  3. Een eenvoudig schema ontwerpen voor het uitsplitsen van vraagprognoses

  4. Time-out hebben bij het verkrijgen van een verbinding na het upgraden van Knex