Pregunta

SO enviar algunos detalles en cuanto a los beneficios en el rendimiento Derivado vs Las tablas temporales.

Aparte de rendimiento, lo que existe situaciones para las cuales una tabla derivada no sería apropiado.

Una de las respuestas por mensaje con un ejemplo sería de gran ayuda.

¿Fue útil?

Solución

Yo preferiría hacer una autocombinación en una tabla temporal de una tabla derivada.

CREATE TEMPORARY TABLE foo AS SELECT ...;

SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;

Versus usando una tabla derivada, donde usted tiene que escribir toda la consulta dos veces:

SELECT ... 
FROM (SELECT ...)
JOIN (SELECT ...) ON ...conditions...;

Sin embargo, otra solución es utilizar expresiones de tabla común , que son ligeramente diferentes de tablas derivadas:

WITH foo AS (SELECT ...)
SELECT ... FROM foo f1 JOIN foo f2 ON ...conditions...;

Siempre que utilice una marca de base de datos que soporta esta sintaxis (Microsoft, Oracle, IBM, PostgreSQL).

Otros consejos

Ámbito de aplicación podría ser uno. Creo tablas temporales pueden ser accesibles a otras operaciones / procesos, etc. Las tablas derivadas se limitan al bloque en el que se declaran.

Si usted tiene acceso a los datos en la tabla temporal en varias consultas podría ser menos costoso para evitar la generación de los datos temporales en repetidas ocasiones:

CREATE TEMPORARY TABLE foo AS SELECT ...;

SELECT ... FROM foo WHERE ...conditions...;

-- sometime later

SELECT ... FROM foo WHERE ...different conditions...;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top