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
Respuesta
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.
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
- 1. Tablas temporales en el servidor sql
- 2. Tablas temporales en el servidor sql?
- 3. ¿Dónde se almacenan las tablas temporales en el servidor sql?
- 4. Sql server 2008, son tablas temporales únicas
- 5. tablas temporales globales - SQL Server vs Oracle
- 6. usando tablas temporales en SQL Azure
- 7. Uso de tablas temporales en SQL Server
- 8. SQL Server/Oracle: tablas temporales privadas
- 9. Tablas temporales de PostgreSQL
- 10. Innodb y tablas temporales
- 11. Intercalación predeterminada de tablas temporales
- 12. ¿Son seguras las tablas temporales en SQL Server multiusuario?
- 13. Eliminación de tablas temporales globales (## tempTable) en SQL Server
- 14. Mejor uso de índices en tablas temporales en T-SQL
- 15. Tablas temporales en procedimientos almacenados
- 16. SQL Server SELECT INTO y bloqueo con tablas temporales
- 17. Tablas temporales locales y globales en SQL Server
- 18. Dependencias del Servidor SQL
- 19. ¿Cuál es la velocidad comparativa de las tablas temporales con las tablas físicas en SQL?
- 20. servidor SQL - OUTER APPLY frente Sub-consultas
- 21. Pantallas web: Paginación frente a tablas largas
- 22. Servidor SQL: equivalente a la cascada de tablas sueltas?
- 23. Tablas temporales MYSQL - Cómo ver las activas
- 24. Configuración óptima de tablas temporales de MySQL (tablas de memoria)?
- 25. Cuál tiene mejor rendimiento: Tablas derivadas o Tablas temporales
- 26. No se puede acceder a tablas temporales desde una función
- 27. ¿Es necesario colocar tablas temporales en mysql?
- 28. Recuperar el esquema de los campos en Visual Studio del procedimiento almacenado que usa tablas temporales
- 29. SQL + unirse a otras tablas
- 30. UNIÓN TODO frente a la condición OR en la consulta del servidor sql
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. –
¿Por qué no CTE? http://msdn.microsoft.com/en-us/library/ms175972.aspx –
¿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