chrislm
Goto Top

SQL Abfrage ind access verursacht ODBC Aufruf fehlgeschlagen

Hallo.
mittlerweile schleicht sich ein kleines Problem an. Wir füttern eine SQL Datenbank jeden Tag mit Daten über Access als Frontend. In der Datenbank sind zurzeit 218659 Datensätze. Diese werden regelmäßig nach Doppler überprüft. Leider kommt nun sehr oft die Fehlermeldung ODBC Aufruf fehlgeschlagen. Die Timeouts habe ich schon soweit hochgesetzt aber daran lag es nicht. Hat jemand eine Idee woran es liegen könnte? - alles andere Funktioniert.
SELECT [GW-Karten].Name, [GW-Karten].Vorname, [GW-Karten].Strasse, [GW-Karten].PLZ, [GW-Karten].Ort, [GW-Karten].ID, [GW-Karten].[PVA-NR], [GW-Karten].Firmen_KZ, [GW-Karten].Erfassungsdat, [GW-Karten].Doppler, [GW-Karten].[Tel falsch], [GW-Karten].[Karte nicht leserlich], [GW-Karten].[Unterschrift fehlt], [GW-Karten].[Karte ungülltig], [GW-Karten].MJ, [GW-Karten].Ausländer
FROM [GW-Karten]
WHERE ((([GW-Karten].Name) In (SELECT [Name] FROM [GW-Karten] As Tmp GROUP BY [Name],[Vorname],[Strasse],[PLZ],[Ort] HAVING Count(*)>1  And [Vorname] = [GW-Karten].[Vorname] And [Strasse] = [GW-Karten].[Strasse] And [PLZ] = [GW-Karten].[PLZ] And [Ort] = [GW-Karten].[Ort])) AND (([GW-Karten].Firmen_KZ)=[Welche Orga?]) AND (([GW-Karten].Erfassungsdat) Between [von Erfassungsdatum?] And [bis Erfassungsdatum?]))
ORDER BY [GW-Karten].Name, [GW-Karten].Vorname, [GW-Karten].Strasse, [GW-Karten].PLZ, [GW-Karten].Ort;

Content-ID: 203140

Url: https://administrator.de/contentid/203140

Ausgedruckt am: 22.11.2024 um 15:11 Uhr

Biber
Biber 11.03.2013, aktualisiert am 12.03.2013 um 12:31:10 Uhr
Goto Top
Moin chrisIm,

Die Timeouts habe ich schon soweit hochgesetzt aber daran lag es nicht
Kennst du den Ausdruck "Toller Plan" und hast du ihn in letzter Zeit mal von eurem DBA gehört?

Vielleicht könntet ihr einfach diess Klicki-Bunti-generierte Gestrunkele mal von Hand anfassen und einfach etwas Performantes draus machen.
Oder bzw. und ein paar unterstützende Indizes auf diese 10 Felder lange GROUP BY/Alternate key-Unappetitlichkeit legen.

Ist dir folgender kleiner Gag in der Abfrage aufgefallen?
.... WHERE ((([GW-Karten].Name) In (SELECT [Name] FROM [GW-Karten] As Tmp GROUP BY [Name....(+x Felder)..
???

Bedeutet: Wenn die Group-by-Abfrage einen vermeintlich doppelten "Müller", "Thomas" in "12345" "Schwartenkrachdorf" findet...
-> dann werden ALLE Datensätze mit Name="Müller" zurückgeschickt????

Warum dauert die Query wohl so lange?

Dennoch : mit den paar Datensätzen einen SQL-Server/eine Datenbankengine zum Abblocken zu bewegen... das schafft nicht jeder.

--> optimier den Krams.

Aus Interesse: Wie lange braucht denn heute so eine Query, falls sie durchgeht?

Grüße
Biber
chrislm
chrislm 12.03.2013 um 09:25:51 Uhr
Goto Top
je nach dem dauert es 30 - 40 Sekunden. Die Abfrage ist von Access generiert worden um Doppler zu finden. Wenn es auch etwas länger dauert, ist es eigentlich immer zweckgemäß. Der vorteil liegt halt daran dass man z.B. was man letzte Woche eingegeben hat mit der kompletten Datenbank die Doppler abgleicht. Danach werden die Doppler von Hand markiert. Wie könnte man denn das Problem besser lösen..?