sql >> Base de Datos >  >> RDS >> Sqlserver

Rendimiento de la tabla SQL 2005 CTE vs TEMP cuando se usa en uniones de otras tablas

CTE es solo un alias para la consulta.

Puede (o no) volver a ejecutarse cada vez que se usa.

No hay una forma limpia de forzar CTE materialización en SQL Server (como /*+ MATERIALIZE */ de Oracle ), y tienes que hacer trucos sucios como este:

CTE puede mejorar el rendimiento si se usa en planes que requieren solo una evaluación (como HASH JOIN , MERGE JOIN etc.).

En estos escenarios, la tabla hash se construirá directamente desde el CTE , mientras que el uso de la tabla temporal requerirá evaluar el CTE , introduciendo los resultados en la tabla temporal y leyendo la tabla temporal una vez más.