Großer Leistungsunterschied: Verwenden von sysdate vs mit vorformatiertem Datum

8

Warum gibt es so große Leistungsunterschiede zwischen diesen beiden Abfragen?

%Vor%

gegen

%Vor%

Unabhängig von den Indizes scheint es, dass sowohl to_date als auch sysdate nur "einige Datumswerte" zurückgeben.

Hinweise: Für diese Tabelle existiert ein zusammengesetzter Index, der eqpid und 2 weitere Spalten enthält. Ein Index existiert auch für mydate. Beide sind B-Baum. Es gibt ungefähr 29 Millionen Zeilen.

Warum sollte der Optimierer solch einen offensichtlich anderen (und in einem Fall grauenvollen) Plan für diese wählen?

    
Charles Burns 01.06.2011, 21:24
quelle

2 Antworten

6

Jonathan Lewis hat über Probleme mit sysdate in 9i geschrieben; Werfen Sie einen Blick auf den Abschnitt "sysdate", der überraschenderweise "http://books.google.co.uk/books?id=TGSd3pkMx5IC&pg=PA130&lpg=PA130&dq=jonathan+lewis+surprising+sysdate&" ; source = bl & amp; ots = 9lVdlnie9r & amp; sig = CVDQtGGghUMY6WMMcpn8oT9mYKc & amp; hl = en & amp; ei = s7fmTYfzFomXhQe5jp3MCg & amp; sa = X & amp; oi = book_result & amp; ct = Ergebnis & amp; resnum = 3 & amp; ved = 0CCkQ6AEwAg # v = eine Seite & amp; q & amp; "> hier zum Beispiel . Im Wesentlichen scheint die Arithmetik von sysdate den Optimierer zu verwirren, in diesem Fall denkt er, dass der Index auf mydate selektiver ist. Dies scheint jedoch ein recht extremes Beispiel zu sein. (Ursprünglich in dieser Richtung von einem nicht wirklich verwandten Ask Tom Beitrag gezeigt).

    
Alex Poole 01.06.2011, 22:10
quelle
1

Ich kenne Oracle nicht, aber in Postgresql ist eine mögliche Quelle, einen Index zu ignorieren, nicht übereinstimmende Typen. Vielleicht macht es die direkte - 5 Oracle, dass die rhs numerisch ist. Kannst du bis zum heutigen Tag (oder was auch immer der exact -Typ von mydate ist) auf sysdate - 5 ?

tun?     
Andrew Lazarus 01.06.2011 21:50
quelle

Tags und Links