Senior Schreiberling
Date of registration: Jul 5th 2003
Location: Malaga
Occupation: Senior Cloud Solution Engineer bei Oracle
Source code |
|
1 2 3 |
SELECT * FROM customer WHERE total_purchases/10 > 1000; |
Source code |
|
1 |
WHERE total_purchases > 1000*10; |
Source code |
|
1 |
WHERE total_purchases+0 = 1000 |
Guru
Date of registration: Dec 11th 2001
Location: Hämelerwald
Occupation: Wissenschaftlicher Mitarbeiter (Forschungszentrum L3S, TU Braunschweig)
Das finde ich nicht verwunderlich. Der Index bezieht sich auf die in der Datenbank enthaltenen Werte, und ist daher für die Suche nach davon abgeleiteten Werten in der Regel nicht verwendbar.Quoted
Original von Sinan
Achso, verwendet man Funktionen wie substr, lower oder uper, so wird der Index ebenso ungültig.
Lieber nicht. Optimierungen sollte man meiner Meinung nach dem Optimierer überlassen. Und wenn man einen Full Table Scan möchte, sollte man ihm das auch direkt sagen. In Oracle geht das irgendwie.Quoted
Man kann den Trick in die andere Richtung verwenden:
Weiß man das eine Anfrage mehr als 20 Prozent der Datensätz zurückliefern würde und deshalb ein Full-Table-Scan schneller sein würde, so kann man bewußt den Index umgehen indem man einfach 0 zur entsprechenden Spalte addiert
Source code
1 WHERE total_purchases+0 = 1000
This post has been edited 4 times, last edit by "Joachim" (Aug 22nd 2006, 9:51am)