SQL-Abfrage auf Oracle DB beschleunigen

Hallo zusammen

Ich habe mir in VB 6.0 eine einfache SQL-Abfrage angelegt, welche auf eine Oracle DB zugreift. Um das ganze zu Testen habe ich mir die Oracle Express Edition auf meinem PC installiert. Das ganze funktioniert auch wunderbar, nur im Life-System über das Netzwerk dauert die Abfrage eine Ewigkeit…

Hat mir jemand einen Tip, wie ich die Abfrage (Zugriff auf Oracle) beschleunigen kann? Im Code ist meiner Meinung nach nicht viel zu holen:

strSQL = "SELECT * " & _
"FROM Basis " & _
„WHERE Artikel = '“ + Fields(„MNR“) + „’“

Ich denke eher, dass ich eine lokale Kopie der Tabelle Basis anlegen sollte, damit das ganze flotter läuft, aber da sind dann unter Umständen die Daten nicht mehr aktuell.

Gruss
Peter

Mahlzeit,

hmmm…

strSQL = "SELECT * " & _
"FROM Basis " & _
„WHERE Artikel = '“ + Fields(„MNR“) + „’“

das sieht mir in der Tat wenig optimierungsfähig aus. Zwei Dinge solltest Du sicherstellen:

  1. Das Feld ‚Artikel‘ sollte indiziert sein, um eine performante Suche zu ermöglichen.

  2. Stelle sicher, daß die Abfrage tatsächlich an die Datenbank geschickt wird, sprich, daß der Server die Suche durchführt. Ich bin mir bei VB 6 nicht sicher, aber da gab es doch mehrere Zugriffsmethoden, unter anderem eine, bei der die lokale Engine cie Suche durchführt, was natürlich fatal ist - da müssen alle Datensätze übers Netzwerk kommen, um sie mit dem Suchbegriff zu vergleichen.

Ich denke eher, dass ich eine lokale Kopie der Tabelle Basis
anlegen sollte, damit das ganze flotter läuft, aber da sind
dann unter Umständen die Daten nicht mehr aktuell.

Das ist in der Tat keine gute Variante.

Gruß

Sancho

Hallo

  1. Das Feld ‚Artikel‘ sollte indiziert sein, um eine
    performante Suche zu ermöglichen.

Da ich leider nur Leseberechtingung auf ORCALE hab kann ich leider auch keine Spalten indexieren. Zudem vermute ich, dass die Tabelle Basis eine View ist.

  1. Stelle sicher, daß die Abfrage tatsächlich an die Datenbank
    geschickt wird, sprich, daß der Server die Suche durchführt.
    Ich bin mir bei VB 6 nicht sicher, aber da gab es doch mehrere
    Zugriffsmethoden, unter anderem eine, bei der die lokale
    Engine cie Suche durchführt, was natürlich fatal ist - da
    müssen alle Datensätze übers Netzwerk kommen, um sie mit dem
    Suchbegriff zu vergleichen.

Ich greife mit ADO über ODBC auf Oracle zu. Ob es da noch was schnelleres gibt, weiss ich nicht.

Ich habe allerdings noch einen Ansatz gefunden, um das ganze zu beschleunigen: Ich werde verscuhen nicht bei jedem Ausführen der SQL-Abfrage das ADO-Objekt neu zu gnerieren. Dies brauch bestimmt auch zu viel Zeit.

Gruss
Peter

Hi,

  1. Das Feld ‚Artikel‘ sollte indiziert sein, um eine
    performante Suche zu ermöglichen.

Da ich leider nur Leseberechtingung auf ORCALE hab kann ich
leider auch keine Spalten indexieren. Zudem vermute ich, dass
die Tabelle Basis eine View ist.

Frag den DB-Administrator, ob er freundlicherweise das Feld indizieren kann. Ihr arbeitet ja wohl nicht gegen-, sondern miteinander :smile:

Ob Tabelle oder View ist dafür irrelevant. Wenn eine View, dann sollte natürlich die zugrunde liegende Tabelle indiziert werden.

Ich greife mit ADO über ODBC auf Oracle zu. Ob es da noch was
schnelleres gibt, weiss ich nicht.

Sorry, da bin ich auch überfragt.

Gruß

Sancho