runstats verlangsamt abfrage
- Dieses Thema hat 4 Antworten und 1 Teilnehmer, und wurde zuletzt aktualisiert vor 18 Jahre, 8 Monaten vonGast.
- AuthorPosts
- 27. September 2004 um 7:05 Uhr #2456
hallo
ich bin zur zeit an meiner diplomarbeit welche um optimierung von datenbankabfragen geht.
iich habe die folgenden drei tabellen:
create table r (a int, b int);
create table s (a int, d int, e int);
create table t (d int, f int);die tabellen sind mit pseudozufallszahlen gefüllt und haben je 1 mio tupel.
und die abfrage:
select *
from r,s,t
where r.a=s.a and s.d=t.d;ohne irgendeine optimierung dauert die abfrage ca 30sek. habe dann einen index auf r(a) eingefügt, was eine verbesserung von etwa 3 sek brachte. nachdem ich nachgelesen habe, dass man nach erstellen eines index runstats durchführen soll, habe ich das auch gemacht.
im explain plan braucht die abfrage faktor 200’000 weniger timerons, dafür dauert die abfrage fast 8 min.kann mir jemand sagen woran das liegt?
wäre sehr dankbar27. September 2004 um 12:18 Uhr #2928vermutlich hat sich DB2 aufgrund der RUNSTATS-Daten für einen anderen (ineffektiveren ? ) Zugriffspfad entschieden.
Interessant wären die PLAN_TABLE Zeilen nach einem EXPLAIN.
a) ohne dass ein Index definiert ist,
b) mit dem Index ohne RUNSTATS
c) mit Index und mit RUNSTATSfür einen noch besseren Zugriffspfad würde ich allerdings den Index über beide Spalten von r definieren. Und einen weiteren über t ( d , f ).
27. September 2004 um 12:31 Uhr #326227. September 2004 um 15:02 Uhr #3482Hi nukular,
wie wäre es mit Visual Explain? – Einfach die Befehlszentrale aufrufen und unter Optionen die automatische Generierung des Zugriffsplans einschalten.
Dann wird bei jeder Abfrage ein Graph mit den Zugriffsinformationen erstellt, der sich leicht und detalliert auswerten läßt.
MfG
AxelP
28. September 2004 um 9:07 Uhr #3627 - AuthorPosts
You must be logged in to reply to this topic.