So, habe schon mal vor langer zeit gefragt, und verwende im Moment den aktuellen Firebird 2.5, und habe bei einem
SQL Statement ein Speedproblem (nicht so schlimm, aber möchte es verstehen, wie und ob man es schneller machen kann)
Verienfacht gesagt ich habe 2 Tabellen
"Artikel" und "Positionen"
ich möchte alle Artikel rausbekommen die nicht in der Position Tabelle vorhanden ist (dort können die auch öfters vorkommen)
Die Versuche waren
Code:
SELECT A.ID FROM ARTIKEL A WHERE A.ID IN (SELECT T.ARTIKEL_ID FROM V_AUFTRAG_PO T WHERE A.ID = T.ARTIKEL_ID GROUP BY T.ARTIKEL_ID)
Code:
SELECT A.ID FROM ARTIKEL A WHERE A.ID NOT IN (SELECT T.ARTIKEL_ID FROM V_AUFTRAG_PO T WHERE A.ID = T.ARTIKEL_ID GROUP BY T.ARTIKEL_ID)
Code:
SELECT A.ID FROM ARTIKEL A WHERE NOT EXISTS (SELECT T.ARTIKEL_ID FROM V_AUFTRAG_PO T WHERE A.ID = T.ARTIKEL_ID)
Code:
SELECT A.ID FROM ARTIKEL A WHERE EXISTS (SELECT T.ARTIKEL_ID FROM V_AUFTRAG_PO T WHERE A.ID = T.ARTIKEL_ID)
dauern alle ca. 26 sekunden
das alleinige
Code:
SELECT A.ID FROM ARTIKEL A
dauert sammt Fetchall ein paar ms und liefert ca 2500 Rekord
das alleinige
Code:
SELECT T.ARTIKEL_ID FROM V_AUFTRAG_PO T GROUP BY T.ARTIKEL_ID
dauert sammt Fetchall auch nur ein paar ms und liefert ca 1200 Rekords
nur die kombination in welcher form auch immer, dauert über 25 Sekunden ...
Hat wer eine Idee, wie man das beschleunigen kann?