Tu puedes imitar el Except con un Left Join o Where Not Exists o aun Where .. No In,
pero el rendimiento sera lo mismo.
En estos casos el sistema puede aprovechar los Indexes (espero que el Primary Key es tambien el Clustered Index) solo parcialmente porque debe comparar todas las columnas.
El With no tiene nada que ver con el rendimiento. Puedes escribir el Except simplemente:
Código SQL:
Ver originalSELECT * FROM T1
EXCEPT
SELECT * FROM T2;
o con With:
Código SQL:
Ver originalWITH CTE AS
(SELECT * FROM T1
EXCEPT
SELECT * FROM T2)
SELECT * FROM CTE;
o dentro de una subconsulta:
Código SQL:
Ver originalSELECT *
FROM (SELECT * FROM T1
EXCEPT
SELECT * FROM T2) AS T
SELECT * FROM T;