Forums Neueste Beiträge
 

Select im select - Performance Problem

29/01/2009 - 09:37 von ml.forum | Report spam
Hallo NG,

ich habe eine Tabelle "E" (13.000 Eintràge) und eine Tabelle
"H" (24.000 Eintràge).

Jetzt will ich z.B. bei einer Abfrage nur die Eintràge aus E, die in H
nicht vorkommen.
Meine Abfrage:

SELECT E.ObjText, E.MARD_4, E.MARD_47, E.MARD_7, E.MBEW_4, E.MBEW_47,
E.MBEW_7, *
FROM E
WHERE (((E.MatNr) Not In (SELECT MatNr FROM H)));

=> nach ca. 15 - 20 Minuten musste ich den Prozess abbrechen, weil
mein Rechner komplett ausgelastet war.

Fragen:
Ist diese Laufzeit normal und kann ich damit rechnen, dass Access mir
irgendwann ein Ergebnis bringt ?
Kann ich den Select noch "tunen", so dass es schneller geht ?

DANKE
Matthias
 

Lesen sie die antworten

#1 Josef Poetzl
29/01/2009 - 09:52 | Warnen spam
Hallo!

schrieb:
ich habe eine Tabelle "E" (13.000 Eintràge) und eine Tabelle
"H" (24.000 Eintràge).

Jetzt will ich z.B. bei einer Abfrage nur die Eintràge aus E, die in H
nicht vorkommen.
Meine Abfrage:

SELECT E.ObjText, E.MARD_4, E.MARD_47, E.MARD_7, E.MBEW_4, E.MBEW_47,
E.MBEW_7, *
FROM E
WHERE (((E.MatNr) Not In (SELECT MatNr FROM H)));

=> nach ca. 15 - 20 Minuten musste ich den Prozess abbrechen, weil
mein Rechner komplett ausgelastet war.



Wenn viele DS verarbeitet werden, wird es mit "Not In" sehr lustig.

Alternative:
SELECT ...
FROM E
WHERE NOT EXISTS (Selct * from H WHERE H.Matnr = E.MatNr)

oder (was unter Jet noch schneller sein sollte):
SELECT ...
FROM
E
LEFT JOIN
H
ON H.MatNr = E.MatNr
WHERE
H.MatNr IS NULL


.. dass ein Index auf MatNr hilft, hàtte ich jetzt nicht erwàhnen
müssen, oder? ;-)

mfg
Josef

EPT: (Access Error Prevention Table) http://access.joposol.com/
FAQ: (Access-FAQ von Karl Donaubauer) http://www.donkarl.com/

Ähnliche fragen