Forums Neueste Beiträge
 

Join einer MS SQL-Tabelle

19/01/2011 - 17:05 von Rene | Report spam
Hallo zusammen,

ich habe in meiner Acc03 eine MS SQL Tabelle verknüpft, welche ca 4.
Mio DS enthàt .
Führe ich jetzt eine Join Abfrage aus mit einer meiner Acc03 Tabelle,
so dauert diese Abfrage extrem lange.
Selbst wenn die Acc03-Tabelle nur 10 Datensàtze umfaßt, dauert es
gefühlte 5Min.
-> Acc03-Tabelle (A) : MSSQL Tab: (B)
SELECT A.T, B.INVENTTRANSID
FROM A INNER JOIN B ON A.T = B.INVENTTRANSID;

Wenn ich die 10 Werte der Tabelle A als where = "1" oder "2" oder
"3"
in die Abfrage setzte, bekomme ich das Ergebnis "sofort" angezeigt
SELECT b.INVENTTRANSID FROM b
WHERE B.INVENTTRANSID="1" Or B.INVENTTRANSID)="2" Or .
Den where-String kann man sich ja per VBA zusammenbasteln,
nur ist die String-Größe glaube ich auf 256-Zeichen begrenzt.
In Tabelle A stehen nicht nur 10 sondern >1000 DS drinne


Auf die MS SQL DB darf ich per ODBC nur lesend drauf zugreifen.
Wie schaffe ich es mir ein schnelleres Ergebnis anzeigen zu lassen.
Pass Through / Stored Proc ?
Per VBA (db.OpenRecordset(sql, dbOpenForwardOnly, dbSQLPassThrough))
ist mir irgendwie zu langsam.

Für jede Hilfe besten Dank im voraus

Gruß Rene
 

Lesen sie die antworten

#1 Jörg Burzeja
19/01/2011 - 22:36 | Warnen spam
Am 19.01.2011 17:05, schrieb Rene:

ich habe in meiner Acc03 eine MS SQL Tabelle verknüpft, welche ca 4.
Mio DS enthàt .
Führe ich jetzt eine Join Abfrage aus mit einer meiner Acc03 Tabelle,
so dauert diese Abfrage extrem lange.
Selbst wenn die Acc03-Tabelle nur 10 Datensàtze umfaßt, dauert es
gefühlte 5Min.
-> Acc03-Tabelle (A) : MSSQL Tab: (B)
SELECT A.T, B.INVENTTRANSID
FROM A INNER JOIN B ON A.T = B.INVENTTRANSID;

Wenn ich die 10 Werte der Tabelle A als where = "1" oder "2" oder
"3"
in die Abfrage setzte, bekomme ich das Ergebnis "sofort" angezeigt
SELECT b.INVENTTRANSID FROM b
WHERE B.INVENTTRANSID="1" Or B.INVENTTRANSID)="2" Or .
Den where-String kann man sich ja per VBA zusammenbasteln,
nur ist die String-Größe glaube ich auf 256-Zeichen begrenzt.
In Tabelle A stehen nicht nur 10 sondern>1000 DS drinne


Auf die MS SQL DB darf ich per ODBC nur lesend drauf zugreifen.
Wie schaffe ich es mir ein schnelleres Ergebnis anzeigen zu lassen.
Pass Through / Stored Proc ?
Per VBA (db.OpenRecordset(sql, dbOpenForwardOnly, dbSQLPassThrough))
ist mir irgendwie zu langsam.

Für jede Hilfe besten Dank im voraus



Ich würde TAB B in einer Unterabfrage auf die benötigten Informationen
reduzieren, diese gruppieren, und nur den Rest joinen.

Mit ein paar mehr Datensàtzen als bei Dir konnte ich damit vergleichbar
die Ausführungszeit von ca. 3 Minuten auf ca. 5 Sekunden reduzieren.


Viele Grüsse
Jörg

++ Where Do you want to go tomorrow? ++
++ http://schneegans.de/usenet/microsoft-umzug/ ++

Ähnliche fragen