Entiendo lo que estás tratando de lograr. ¡Bienvenido al mundo de una variedad de bases de datos!
SQL Server 2000 admite tablas temporales creadas al agregar un # al nombre de la tabla, convirtiéndola en una tabla temporal localmente accesible (local para la sesión) y anterior ## al nombre de la tabla, para tablas temporales accesibles globalmente, por ejemplo #MyLocalTable y ## MyGlobalTable respectivamente.
El servidor SQL 2005 y versiones posteriores admiten tablas temporales (locales, globales) y variables de tablas: ¡tenga cuidado con la nueva funcionalidad de las variables de tabla en SQL 2008 y la versión dos! La diferencia entre las tablas temporales y las variables de tabla no es tan grande, pero radica en la forma en que el servidor de la base de datos las maneja.
no me gustaría hablar de las versiones anteriores de SQL Server como el 7, 6, aunque he trabajado con ellos y es de donde vine de todos modos :-)
Es común pensar que las variables de tabla siempre residen en la memoria, pero esto está mal. Según el uso de la memoria y el volumen de transacciones del servidor de la base de datos, las páginas de una variable de tabla se pueden exportar desde la memoria y se pueden escribir en tempdb y el resto del procesamiento se realiza allí (en tempdb).
Tenga en cuenta que tempdb es una base de datos en una instancia sin objetos permanentes en la naturaleza pero es responsable de manejar cargas de trabajo que incluyen transacciones secundarias como clasificación y otros trabajos de procesamiento que son de naturaleza temporal. Por otro lado, las variables de tabla (generalmente con datos más pequeños) se guardan en memoria (RAM) haciéndolas más rápidas de acceder y por lo tanto menos disco IO en términos de usar el disco tempdb cuando se usan variables de tabla con datos más pequeños en comparación con tablas temporales que siempre inicia sesión en tempdb.
Las variables de tabla no se pueden indexar mientras que las tablas temporales (tanto locales como globales) se pueden indexar para un procesamiento más rápido en caso de que la cantidad de datos sea grande. Por lo tanto, conoce su elección en caso de un procesamiento más rápido con volúmenes de datos más grandes mediante transacciones temporales. También vale la pena señalar que las transacciones en variables de tabla por sí solas no se registran y no se pueden deshacer mientras que las que se realizan en tablas temporales se pueden revertir.
En resumen, las variables de tabla son mejores para datos más pequeños, mientras que las tablas temporales son mejores para datos más grandes que se procesan temporalmente. Si también desea un control de transacción adecuado mediante el uso de bloques de transacción, las variables de tabla no son una opción para revertir transacciones, por lo que en este caso es mejor utilizar tablas temporales.
Por último, las tablas temporales siempre aumentarán el disco IO, ya que siempre usan tempdb, mientras que las variables de la tabla pueden no aumentarlo, dependiendo de los niveles de tensión de la memoria.
¡Avísame si quieres consejos sobre cómo ajustar tu tempdb para obtener un rendimiento mucho más rápido y superar el 100%!
espero que son conscientes ¡que en MySQL, las tablas temporales creadas por el usuario no están en la memoria por defecto! Solo si especifica ENGINE = MEMORY en la instrucción CREATE TABLE, la tabla estará en la memoria. De lo contrario, la tabla temporal se creará con el motor de almacenamiento predeterminado, que es muy probable MyISAM o INNODB, y se guardará en el disco. No confunda creado por el usuario con tablas temporales internas creadas por MySQL durante combinaciones complejas. Esos son creados en la memoria, si es posible. –