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

Tabella SQL 2005 CTE e TEMP Prestazioni quando utilizzata in join di altre tabelle

CTE è solo un alias per la query.

Può (o meno) essere eseguito nuovamente ogni volta che viene utilizzato.

Non esiste un modo pulito per forzare CTE materializzazione in SQL Server (come /*+ MATERIALIZE */ di Oracle ), e devi fare brutti scherzi come questo:

CTE può migliorare le prestazioni se utilizzato in piani che richiedono una sola valutazione (come HASH JOIN , MERGE JOIN ecc.).

In questi scenari, la tabella hash verrà creata direttamente dal CTE , durante l'utilizzo della tabella temporanea sarà necessario valutare il CTE , trascinando i risultati nella tabella temporanea e leggendo nuovamente la tabella temporanea.