tipo temporales tablas tabla stored las into eliminar donde dinamica crear almacenan sql mysql

sql - stored - ¿Cómo puede beneficiarse mi aplicación de las tablas temporales?



tabla temporal sql server stored procedure (6)

He estado leyendo un poco sobre tablas temporales en MySQL, pero soy un principiante admitido cuando se trata de bases de datos en general y MySQL en particular. He visto algunos ejemplos y la documentación de MySQL sobre cómo crear una tabla temporal, pero estoy tratando de determinar cómo las tablas temporales pueden beneficiar a mis aplicaciones y, en segundo lugar, supongo qué tipo de problemas puedo encontrar. De acuerdo, cada situación es diferente, pero creo que lo que estoy buscando es un consejo general sobre el tema.

Hice un poco de google pero no encontré exactamente lo que estaba buscando sobre el tema. Si tienes alguna experiencia con esto, me encantaría saber sobre eso.

Gracias, Matt


El mejor lugar para usar tablas temporales es cuando necesita extraer un montón de datos de varias tablas, trabajar en esos datos y luego combinar todo en un conjunto de resultados.

En MS SQL, las tablas temporales también se deben usar en lugar de los cursores siempre que sea posible debido a la velocidad y el impacto de los recursos asociados con los cursores.


En primer lugar, una exención de responsabilidad: mi trabajo está informando, así que termino con consultas mucho más complejas que cualquier desarrollador normal. Si está escribiendo una aplicación simple CRUD (Create Read Update Delete) (esta sería la mayoría de las aplicaciones web), entonces realmente no desea escribir consultas complejas, y probablemente esté haciendo algo mal si necesita crear tablas temporales.

Dicho esto, utilizo tablas temporales en Postgres para una serie de propósitos, y la mayoría se traducirán a MySQL. Los uso para dividir consultas complejas en una serie de piezas individualmente comprensibles. Los uso para la coherencia: al generar un informe complejo a través de una serie de consultas, y luego puedo descargar algunas de esas consultas en los módulos que uso en múltiples lugares, puedo asegurarme de que los diferentes informes sean consistentes entre sí. (Y asegúrese de que si necesito arreglar algo, solo tengo que arreglarlo una vez). Y, en raras ocasiones, los uso deliberadamente para forzar un plan de consulta específico. (¡No intente esto a menos que realmente comprenda lo que está haciendo!)

Así que creo que las tablas temporales son geniales. Pero dicho esto, es muy importante que comprenda que las bases de datos generalmente vienen en dos formas. El primero está optimizado para bombear muchas transacciones pequeñas, y el otro está optimizado para extraer un número menor de informes complejos. Los dos tipos deben ajustarse de forma diferente, y un informe complejo ejecutado en una base de datos transaccional corre el riesgo de bloquear las transacciones (y por lo tanto hacer que las páginas web no vuelvan rápidamente). Por lo tanto, generalmente no desea evitar el uso de una base de datos para ambos propósitos.

Supongo que estás escribiendo una aplicación web que necesita una base de datos transaccional. En ese caso, no deberías usar tablas temporales. Y si necesita informes complejos generados a partir de sus datos transaccionales, una mejor práctica recomendada es realizar copias de seguridad periódicas (p. Ej., Diarias), restaurarlas en otra máquina y luego ejecutar informes en esa máquina.


Las tablas temporales a menudo son valiosas cuando tiene un SELECT bastante complicado que desea realizar y luego realiza un montón de consultas en ese ...

Puedes hacer algo como:

CREATE TEMPORARY TABLE myTopCustomers SELECT customers.*,count(*) num from customers join purchases using(customerID) join items using(itemID) GROUP BY customers.ID HAVING num > 10;

Y luego haga un montón de consultas en contra de MyTopCustomers sin tener que hacer las uniones a compras y artículos en cada consulta. Luego, cuando su aplicación ya no necesita el identificador de la base de datos, no es necesario realizar ninguna limpieza.

Casi siempre verá tablas temporales usadas para tablas derivadas que fueron caras de crear.


Los he usado en el pasado cuando necesitaba crear datos evaluados. Sin embargo, eso fue antes del momento de las vistas y sub selecciones en MySQL, y por lo general las uso ahora en las que habría necesitado una tabla temporal. El único momento en que podría usarlos es si los datos evaluados tardaron mucho en crearse.


No los he hecho en MySQL, pero los he hecho en otras bases de datos (Oracle, SQL Server, etc.).

Entre otras tareas, las tablas temporales proporcionan una forma de crear un conjunto de datos consultables (y retornables, por ejemplo desde un sproc) creados especialmente. Supongamos que tiene varias tablas de figuras: puede usar una tabla temporal para pasar esas cifras a totales agradables y limpios (u otras operaciones matemáticas), luego unir esa tabla temporal a otras en su esquema para el resultado final. (Un ejemplo de esto, en uno de mis proyectos, es calcular cuántas llamadas programadas debe realizar un determinado empleado relacionado con las ventas por semana, quincenal, mensual, etc.)

También los uso a menudo como un medio para "inclinar" los datos, convirtiendo columnas en filas, etc. Son buenos para el procesamiento de datos avanzado, pero solo utilícelos cuando lo necesite. (Mi regla de oro, como siempre, se aplica: si no sabes por qué estás usando x , y no sabes cómo funciona x , entonces probablemente no deberías usarlo).

Generalmente, termino utilizándolos más en sprocs, donde se necesita un procesamiento de datos complejo. Me encantaría dar un ejemplo concreto, pero el mío sería en T-SQL (a diferencia del SQL más estándar de MySQL), y también son todos códigos de cliente / producción que no puedo compartir. Estoy seguro de que alguien más aquí en SO recogerá y proporcionará un código de muestra genuino; esto fue solo para ayudarlo a obtener la esencia de las tablas temporales de dominio de problemas.


Si es nuevo en las bases de datos, hay algunos buenos libros de Joe Kelko que revisan las mejores prácticas para ANSI SQL. SQL For Smarties describirá con gran detalle el uso de la tabla temporal, el impacto de los índices, las cláusulas where, etc. Es un gran libro de referencia con detalles en profundidad.