Preferiría hacer una auto unión en una tabla temporal que 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 comunes 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 admita esta sintaxis (Microsoft, Oracle, IBM, PostgreSQL).
Eso [cuestión está marcado para SQL Server] (http : //stackoverflow.com/questions/2326395/which-one-have-better-performance-derived-tables-or-temporary-tables), por lo que la información debe considerarse específica para él y no para todas las bases de datos. –