Dauer einer Abfrage vor der Ausführung ermitteln!

Steamrunner

Grünschnabel
Hi Leutz!

Wie schon im Titel erwähnt, würde ich gerne Wissen, ob es möglich ist die Dauer einer Abfrage schon vor der Ausführung zu berechnen, sodass man weiß das die Abfrage z.B. 5 min dauert u.s.w. Kann mir da jemand nen Tipp geben? Danke im Vorraus!


Greets

Andreas

P.s. Bei den genutzten Datenbanken handelt es sich um Sybase SQL und Oracle!
 
Das ist nicht möglich. Du kannst zwar anhand statistischer Analyse ungefähr vorhersagen, die tatsächliche Zeit kann davon allerdings auch stark abweichen.
 
Du protokollierst einfach jedes mal die tatsächlich benötigte Zeit und kannst daraus Prognosen schließen.
 
Hi Leutz!
...
P.s. Bei den genutzten Datenbanken handelt es sich um Sybase SQL und Oracle!

Hallo,

bei Oracle kannst Du mit Ausführungsplänen bzw. den Reports dazu deine SQL-Statements optimieren.
Suche mal in der Doku nach: EPLAIN PLAN FOR <sql-statement>

Vom Verlag Entwickler.press gibt es für 9,90 € einen kompaktes, aber gutes, Büchlein (118 Seiten) : SQL-Tuning von Rudolf Jansen ISBN 978-3-939084-90-7

Es ist weitgehend allgemeingültig geschrieben, die konkreten Beispiele beziehen sich aber auf Oracle.

Im wesentlichen ergibt sich aus den Ausführungsplänen in welcher reihenfolge weleche Tabellen genutzt werden und ob dies mit einem FullScan oder Indexzugriff erfolgt und welche Kosten bzw. CPU-Nutzung erforderlich waren.

Grundätzlich ist es so wie Gumbo schon geschrieben hat, man muss den SQL-Befehl, ggf. in einem Testsystem, ein- oder besser mehrmals ausführen und dann die Zeiten messen und die Ausführungsreihenfolgen optimieren.
Mehrmals ausführen, weil es sein kann, dass beim zweiten Mal ein Teil oder alles im Cache abläuft und nicht mehr über Plattenzugriffe.
Manche Entwicklungsumgebungen zeigen automatisch die Zeiten für eine SQL-Abfrage an.

mfg
 
dank dir für deinen Tipp!

Ich werd mal in das Buch reinschauen und kucken, wie ich das am Besten mit Dauer löse!

Nochmal Danke an euch Beide!

Gruß!
 
Zurück