Montag, 14. Mai 2012

DELTA Unterschied von zwei Tabellen anzeigen

Um kleine Tabellen zu vergleichen genügt folgender Aufruf
SELECT *
  FROM TABLE_A A
 WHERE A.X IN (SELECT *
                 FROM   TABLE_B B)
Handelt es sich aber um grössere Tabellen, ist folgender Select sehr viel Performanter:
SELECT DWH.A AS DWH_A, MARTS.A AS MARTS_A
FROM (
    SELECT 1 AS A FROM DUAL
    UNION ALL
    SELECT 2 AS A FROM DUAL
    UNION ALL
    SELECT 3 AS A FROM DUAL   -- GEMEINSAM SELECT MIT DATUM 1. BIS AKTUELL
    UNION ALL                 -- 1. VON OFFENER VERRECHNUNGSPERIODE
    SELECT 4 AS A FROM DUAL
    UNION ALL
    SELECT 5 AS A FROM DUAL
) DWH LEFT OUTER JOIN (
    SELECT 1 AS A FROM DUAL
    UNION ALL         -- ZIEL TABELLE ALLE DATEN VON OFFENEN VERRECHNUNGSPERIODEN
    SELECT 2 AS A FROM DUAL
) MARTS
ON DWH.A = MARTS.A
WHERE MARTS.A IS NULL

Keine Kommentare:

Kommentar veröffentlichen