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

¿Cuál es la velocidad comparativa de las tablas temporales con las tablas físicas en SQL?

Las tablas temporales son un gran NO en SQL Server.

  • Provocan recompilaciones de planes de consultas, lo cual es costoso.
  • Crear y eliminar la tabla también son operaciones costosas que está agregando a su proceso.
  • Si hay una gran cantidad de datos que van a los datos temporales, sus operaciones serán lentas debido a la falta de índices. PUEDE crear índices en tablas temporales. Pero nunca recomendaré una tabla temporal para nada con una gran cantidad de registros.

Su otro enfoque:crear y luego eliminar tablas regulares solo crea la misma sobrecarga.

Otro enfoque:usar tablas existentes, aumentar las filas con una columna adicional para diferenciar qué filas pertenecen a cada usuario/sesión. Elimina la carga de crear/eliminar las tablas pero, luego, deberá ser paranoico con el código que genera el valor para diferenciar las filas Y tendrá que desarrollar una forma de mantener la tabla para aquellos casos en que una sesión finalizó prematuramente. y hay restos (filas que no se eliminaron al final del procesamiento).

Te recomiendo que replantees tu estrategia de procesamiento. Algunas alternativas son tan fáciles como usar consultas correlacionadas, tablas derivadas o variables de tabla. Echa un vistazo a:http://www.sql-server- performance.com/articles/per/temp_tables_vs_variables_p1.aspx

Editar: El enfoque de crear y descartar tablas regulares y el enfoque de reutilizar una tabla regular aumentada con un campo adicional:Ambos generarán recompilaciones del plan de consulta porque la cantidad de datos modificados desencadenará la reevaluación de las estadísticas de la tabla. Nuevamente, su mejor enfoque es encontrar formas alternativas de procesar sus datos.