2010-12-31 34 views
15

En los procedimientos almacenados de SQL Server cuándo usar tablas temporales y cuándo utilizar los cursores. ¿Cuál es la mejor opción en cuanto al rendimiento?Tablas temporales del servidor SQL frente a los cursores

+0

Ni si puede evitarlo. SQL está basado en SET, y generalmente puede manejar las situaciones en las que más se usan tablas temporales y/o cursores. –

+1

¿Por qué no CTE? http://msdn.microsoft.com/en-us/library/ms175972.aspx –

+1

¿Puedes aclarar un poco aquí? Usar tablas temporales versus usar cursores es un poco como manzanas y naranjas. Las tablas temporales frente a las variables de tabla serían una comparación más apropiada. – tcnolan

Respuesta

18

Si alguna vez es posible evitar cursores como la peste. SQL Server es basado en conjunto - todo lo que necesita hacer en un RBAR (row-by-agonizing-row) será lento, lento y va en contra de los principios básicos de cómo funciona SQL.

Su pregunta es muy vaga: en base a esa información, no podemos decir realmente lo que está tratando de hacer. Pero la recomendación principal permanece: siempre que sea posible (y es posible en la gran mayoría de los casos), use las operaciones basadas en conjuntos - SELECT, UPDATE, INSERT y se une, no fuerce su pensamiento de procedimiento en SQL Server: esa no es la mejor manera de hacerlo.

Así que si puede usar operaciones basadas en conjuntos para llenar y usar sus tablas temporales, preferiría ese método sobre los cursores cada vez.

7

Los cursores trabajan fila por fila y tienen un rendimiento extremadamente bajo. En casi todos los casos, pueden reemplazarse por un mejor código basado en conjuntos (aunque normalmente no son tablas temporales)

Las tablas de temperatura pueden ser buenas o malas dependiendo de la cantidad de datos y de lo que esté haciendo con ellos. Generalmente no son un reemplazo para un cursor.

sugerimos que lea esto: http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

Cuestiones relacionadas