Bitte schlagen Sie vor, welche der folgenden Abfrage für große Datenmenge schneller sein wird. Eigentlich muss ich nicht passende Datensätze zwischen temp und COSTING_TABLE finden und der Datensatz ist in Millionen. Wir müssen noch Indizes implementieren, aber ich suche nach einer effizienten Methode, um das Gleiche zu tun., die eine JOIN- oder IN-Klausel besser ausführen
SELECT tmp.PRINT, tmp.NAME, tmp.COST , tmp.CURRENCY, tmp.validity
FROM TEMPTABLE tmp
WHERE NOT EXISTS (SELECT 1
FROM COSTING_TABLE ct
WHERE (ct.print = tmp.print
AND ct.name IN (SELECT name FROM CostMapping WHERE PRICE 'ABC')
AND ct.COST <> tmp.COST
AND to_date(tmp.validity,'DD-MON-YY') > SYSDATE)
)
AND tmp.name = 'ABC';
JOIN mit
SELECT tmp.PRINT, tmp.NAME, tmp.COST , tmp.CURRENCY, tmp.validity
FROM TEMPTABLE tmp
LEFT OUTER JOIN
COSTING_TABLE ct
ON ct.print = tmp.print AND
ct.name IN (SELECT name FROM CostMapping WHERE PRICE = 'ABC')
AND ct.COST <> tmp.COST
AND to_date(tmp.valid_before,'DD-MON-YY') > SYSDATE
WHERE tmp.name = 'ABC' AND
(ct.PRINT IS NULL OR ct.NAME IS NULL OR ct.COST IS NULL OR ct.validity IS NULL);
Vielen Dank im Voraus.
Auf den ersten Blick sehen mir die beiden Abfragen nicht besonders ähnlich - verschiedene Spalten, unterschiedliche Tabellenzahlen werden referenziert. –