Hilfe bei Abfragen-Optimierung gesucht

03/12/2007 - 17:18 von Andreas Vogt | Report spam
Hallo,
habe folgende Abfrage:
SELECT CDbl([T2].[ID_Duese]) AS ID_Due
FROM [Z:\Projekte\Kunde\KundenDB.mdb].Tabelle1 AS T2
WHERE CDbl([T2].[ID_Duese]) Not In (Select ID_Due From
tbl_Duesenventil)

CDbl() weil das Feld in T2 voranstehende Nullen hat und vom Typ String
ist.
Das Problem ist das Not In. Die Abfrage dauert min. 10 Minuten.
Es handelt sich in den beiden Tabellen um 16000 bzw.12000 DS.
Lass ich das Not weg dauerts 1-2 Sekunden.

Wie kann ich die Abfrage optimieren? Ziel ist es die Datensàtze aus
Tabelle1 herauszufinden die nicht in tbl_Duesenventil sind. An der
Tabelle1 kann ich leider strukturell nichts àndern da diese von extern
kommt.

Gruß Andreas
 

Lesen sie die antworten

#1 Doerthe Weber
03/12/2007 - 17:32 | Warnen spam
Hallo Anreas,

Andreas Vogt schrieb:
Hallo,
habe folgende Abfrage:
SELECT CDbl([T2].[ID_Duese]) AS ID_Due
FROM [Z:\Projekte\Kunde\KundenDB.mdb].Tabelle1 AS T2
WHERE CDbl([T2].[ID_Duese]) Not In (Select ID_Due From
tbl_Duesenventil)

CDbl() weil das Feld in T2 voranstehende Nullen hat und vom Typ String
ist.
Das Problem ist das Not In. Die Abfrage dauert min. 10 Minuten.
Es handelt sich in den beiden Tabellen um 16000 bzw.12000 DS.
Lass ich das Not weg dauerts 1-2 Sekunden.

Wie kann ich die Abfrage optimieren? Ziel ist es die Datensàtze aus
Tabelle1 herauszufinden die nicht in tbl_Duesenventil sind. An der
Tabelle1 kann ich leider strukturell nichts àndern da diese von extern
kommt.



Zunàchst würde ich die Tabelle zumindest in die gleiche DB einbinden...
Leider ist Access bei "In" oder "Not In" nicht gerade gut optimiert (man
fragt sich sogar, ob überhaupt ;-)), sogar ein "Exists" oder "Not
Exists" ist da besser. Ich würde einen Left Join T2 auf tbl_Duesenventil
mit Bedingung tbl_Duesenventil.ID_Due = Null empfehlen.

Gruß
Doerthe

Ähnliche fragen