Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
24.04.2024 17:19:09
Anzeige
Archiv - Navigation
1840to1844
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

ODBC Update dauert lange

ODBC Update dauert lange
09.08.2021 09:48:59
Hannes
Hallo,
ich führe zwei Anfragen über eine ODBC Schnittstelle aus.
Die ersten Anfrage ist nur das Lesen eines bestimmtes Wertes über SELECT ... FROM ... WHERE... , dies funktioniert auch relativ schnell.
Bei der Zweiten Anfragen muss mittels UPDATE ... SET... WHERE... in der SQL Datenbank ein Eintrag geändert werden. Das dauert so lange als würde man die gesamte SQL ins Excel laden. Kann man das UPDATE machen ohne das die SQL Datenbank heruntergeladenen wird?
Sub sql()

Das geht schnell - nur Lesen eines Wertes
'sqlstring = "SELECT carrier_magname.quantity FROM mydbcarrview_10.carrier_magname carrier_magname WHERE carrierid = '076413' "

Das dauert sehr lange, als würde er die gesamte SQL Dafür herunterladen.
sqlstring = "UPDATE mydbcarrview_10.carrier_magname SET quantity = 99 WHERE carrierid = '076413' "
connstring = "ODBC;DSN=mydata db"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
Destination:=Range("C15"), sql:=sqlstring)
.Refresh
End With
End Sub

Die erste ist nur das Lesen eines bestimmtes Wertes, dies funktioniert auch relativ schnell.
Bei der Zweiten Abfragen muss mittels "Update" in der SQL Datenbank ein Eintrag geändert werden. Das dauert so lange als würde man die gesamte SQL ins Excel laden.
Kann man das UPDATE machen ohne das die SQL Datenbank heruntergeladenen wird?

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ODBC Update dauert lange
09.08.2021 10:18:48
ChrisL
Hi Hannes
Für ein UPDATE braucht es kein vorgängiges SELECT.
Die Frage ist, was im Hintergrund abläuft. Sofern meine Recherche richtig war benötigt ein UPDATE auf MySQL aus Access (ich nehme an Excel verhält sich identisch), dass die Daten im Hintergrund geladen werden. Also auch ohne SELECT werden grosse Datenmengen geladen, was den Prozess verlangsamt.
Anscheinend empfiehlt sich eine Pass-Trough Query, womit die Abfrage nicht mehr innerhalb von Access/Excel, sondern auf dem SQL-Server ausgeführt wird.
https://microsoft.public.de.access.narkive.com/ddscbWMF/pass-through-in-vba
So jedenfalls meine Recherche/Interpretation. Mit dem Thema habe ich mich bisher allerdings kaum auseinander gesetzt, darum bitte die Frage bei Bedarf wieder als offen kennzeichnen.
(N.b. genauere Angaben zu den Treiber-Versionen, Datenbanktypen, Server etc. würde den Profis evtl. zusätzliche Hinweise geben oder eine gezieltere Internetrecherche ermöglichen.)
cu
Chris
Anzeige
AW: ODBC Update dauert lange
09.08.2021 11:32:26
Hannes
Hallo Chris,
"Für ein UPDATE braucht es kein vorgängiges SELECT. "
Die Select Abfrage muss nicht sein, daher auskommentiert. Ich wollte nur zeigen das diese sehr schnell ausgeführt wird ,während die Update Funktion sehr langsam ist. Hab mich da unglücklich ausgedrückt
Das mit der Pass-Trough Query werde ich genauer recherchieren, klingt aber vielversprechend.
Zur Datenbank:
Ist eine SQL DB welche mit PostgreSQL Unicode über System DSN als ODBC Verbindung angesprochen wird.
Die DB selbst ist nicht von mir, ich "darf" nur damit arbeiten - sprich muss Werte für bestimmte Einträge aktualisieren.
Anzeige
AW: ODBC Update dauert lange
09.08.2021 13:26:06
ChrisL
Hi
OK, das mit dem SELECT wäre geklärt. Ehrlich gesagt kann ich mir nicht genau erklären, wieso SELECT deutlich schneller wie UPDATE ist. Meiner Theorie zufolge müssten auch für SELECT grössere Datenmengen bezogen werden.
Ich glaube weiterhin "Pass Through Query" könnte das richtige Stichwort sein. Inzwischen habe ich allerdings meine Zweifel, ob die Systematik von Access so einfach auf Excel übertragen werden kann.
https://www.youtube.com/watch?v=JCeEBb3mR7E
https://stackoverflow.com/questions/3863503/how-to-execute-postgresql-function-from-vba-code
Vielleicht wäre aber Access ganz generell eine bessere Ausgangslage, weil da gibt es Pass-Through bereits als Standardoption.
Ich lasse den Beitrag weiterhin offen, denn mit dem Thema habe ich mich etwas übernommen.
cu
Chris
Anzeige
AW: ODBC Update dauert lange
10.08.2021 18:56:14
Yal
Hallo zusammen,
Select ist schneller, weil immer nur gelesen wird. Genauso wie USB-Stick schneller beim Lesen als beim Schreiben sind.
Das Problem kommt aber von dem ".. .QueryTable.Add ..": es ist ein Werkzeug um Daten abzuziehen, nicht um zurückschreiben. Da wird versucht eine gesamte QueryTable zu herstellen, wo es keine gewünscht ist.
Wenn schon ConnectionString vorhanden, dann Recordset verwenden.
Siehe (u.a.)
https://docs.microsoft.com/de-de/office/client-developer/access/desktop-database-reference/database-openrecordset-method-dao
https://docs.microsoft.com/de-de/office/vba/access/concepts/data-access-objects/modify-an-existing-record-in-a-dao-recordset
VG
Yal
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige