none
Access 2010 (ODBC Ora) holt sich bei einfacher Suche die komplette Tabelle - Access 2000 holte sich nur wenige Datensätze

    Frage

  • Hallo,

    ich habe die Migration von Access 2000 auf 2010 zurückgestellt, da einige Access 2010 native Suchaktionen (Strg+F und dann im indizierten Feld suchen) um den Faktor 100 bis 1000 länger dauern.

    Dies bestätigte auch das ODBC-Trace Protokoll. Auf dem selben PC sieht man im SQL.log unter Access 2000 noch ein
    SELECT mit LIKE '000223%'. Unter 2010 zieht er sich die komplette Tabelle Feld für Feld.

    Wie kann ich dieses Verhalten abstellen?

    PS: Umprogrammierung kommt nicht in Frage, da an zu vielen Stellen mit Strg+F gesucht wurde, was vorher auch bei Tabellen mit 100tausenden von Datensätzen ging.

    System: Ora11gR2 Client (Win7/64) und Server Ora11gR2 LINUX;

    Bin dankbar für Hinweise.

    Donnerstag, 26. Juni 2014 14:54

Alle Antworten

  • Hi,

    kannst Du bitte noch die genauen SQL Statements mit Access 2000 und Access 2010 posten? (Bitte exakt)

    Ich nehme mal an, dass das System, auf dem Access läuft, jeweils ein anderes ist. Falls ja, prüf bitte auch mal, ob wirklich exakt derselbe ODBC Treiber für Oracle auf den Systemen verwendet wird und ob dessen Einstellungen absolut identisch sind.


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community


    Donnerstag, 26. Juni 2014 15:13
  • Hallo Stefan,

    die Suche erfolgt mit Strg+F. Hierbei öffnet sich der aus MS Access bekannte Suchdialog
    sieht ähnlich wie dieser aus:
    http://www.teialehrbuch.de/Kostenlose-Kurse/Access-2007-Basis/images/064.jpg

    Mit anderen Worten, das SQL wird von Access selbst generiert und das sieht man nur, wenn man auf dem Client das ODBC Trace einschaltet (oder auf Oracle selbst tracet). Ich habe nur die Traces vom Client und die sind bei Access 2010 mehrere GB groß. Bei Access 2000 ist das Tracefile aber auch einige 100KB groß.

    Von daher habe ich kein SQL was ich posten kann. Der Rest der App arbeitet normal, wie unter A2k.

    Auf dem Client befinden sich beide Access Versionen (2k10 und 2k0) und nur ein ODBC-Eintrag. Ich habe auch nur eine Test-DB, die ich wechselweise mit 2k und 2k10 öffne. Eine Konvertierung von 2k auf  2k10 brachte auch keine Änderung.

    Um alle Seiteneffekte zu umgehen, habe ich direkt eine Tabelle geöffnet und dort den Suchdialog aufgerufen. Mache ich dies in Access 2k geht es unter einer Sekunde. Auf der gleichen DB auf dem gleichen PC mit der gleichen DSN dauert es unter A2k10 einige Minuten!

    "Ich nehme mal an, dass das System, auf dem Access läuft, jeweils ein anderes ist. "  Nein, alles ist auf einem System installiert.

    Gruß Thomas



    • Bearbeitet Thoma Donnerstag, 26. Juni 2014 15:47
    Donnerstag, 26. Juni 2014 15:35
  • Hallo Thomas,

    ich kenne so ein Verhalten nur, wenn man so was unkluges macht, wie in einer MS Access Abfrage VBA Funktionen zu verwenden, z.b. CStr/CLng/CDate, um Datentypen zu konvertieren. Dann kann MS Access nichts anderes machen, als alle Daten abzurufen und das konvertieren local selbst vorzunehmen.

    Wie sind die Tabellen eingebunden, als verlinkte Tabelle oder über Pass-Through Abfragen?


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Donnerstag, 26. Juni 2014 18:05
  • Hallo Olaf,

    wie schon oben beschrieben, führe ich die Suchaktion direkt auf eine Tabelle aus. D.h., ich öffne die Tabelle im Datenbankfenster und drücke Strg+F und gebe den Suchbegriff ein. Da ist kein Code und keine Query. Zur Isolation des Problems habe ich mir auch eine leere MDB aufgebaut und dort nur die betreffende Tabelle eingelinkt.

    Die Tabellen sind verlinkte Tabellen, damit die Daten änderbar sind.

    Über eine Pass Throug Query geht das ganze natürlich rasend schnell unterhalb einer Sekunde, aber selbige verwende ich nicht.

    Da ich das Schema auch noch auf einem MSSQL Server hatte, habe ich von dort mal eine Tabelle eingebunden und auch hier ergibt sich das gleiche Verhalten unter A2k10 im Vergleich zu A2k, natürlich alles auf ein und demselben PC mit ein und derselben Datenquelle.

    A2k ist in unter einer Sekunde fertig und macht dazu ca. 90 sp_executes und A2k12 macht ca. 30.000 s_executes. Ich habe es serverseitig getracet.


    • Bearbeitet Thoma Donnerstag, 26. Juni 2014 19:37
    Donnerstag, 26. Juni 2014 19:36