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

¿Por qué CTE es mejor que el cursor/tabla derivada/subconsultas/tabla temporal, etc.?

Un CTE (no recursivo) no utiliza cursores. Es un enfoque basado en conjuntos. Esa es la gran diferencia en comparación con el uso de cursores. Pero eso es cierto de no usar cursores en general.

Los cursores deben evitarse siempre que sea absolutamente posible (como estoy seguro de que todos sabemos).

Un CTE no es necesariamente mejor que usar una tabla derivada, pero conduce a un código TSQL más comprensible. Un CTE es realmente solo una abreviatura de una consulta o subconsulta; algo parecido a una vista temporal.

La situación en la que las CTE pueden no ser el mejor enfoque es cuando el optimizador del plan de consultas obtiene estimaciones de filas inexactas para la CTE.

Pregunta relacionada:¿Cuáles son las ventajas/desventajas de usar un CTE?