Hallo. Ich möchte mit "LIKE 'A%'" eine indizierte Spalte durchsuchen. Leider benutzt Oracle den Index erst, wenn ich mindest einen 3-stelligen Suchwert vor dem "%" angebe, also "LIKE 'ABC%'". Warum tuen die sowas und kann ich das irgendwie ändern?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Vermutung:
Die Einschränkung streut vielleicht nicht ausreichend.
Soll heissen?
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Soll heissen, dass der Optimizer einen full table scan macht, da sehr viele Einträge der Einschränkung entsprechen und ein Suchen über Index aufwändiger wäre.
Also bleibt mir genau die Wahl die ich getroffen habe: die Suche erst nach Eingabe von 3 Zeichen zu starten. Sowas ist mir aber in 20 Jahren auch noch nicht über den Weg gelaufen. Ok, hatte auch sehr selten eine Tabelle mit 6 Millionen Einträgen. Aber das ein Fullscan dann schneller als eine Indexsuche sein soll ... merkwürdig.
Vielen Dank für Deine Antwort.
Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the Universe trying to produce bigger and better idiots. So far, the Universe is winning.
Möglicherweise liegt das daran das der Indizierungsaufwand(inkl. Ressourcen) standardmässig zu hoch wäre bei einer so reichhaltig gefüllten Tabelle. Der Fullscan wäre dann tatsächlich die bessere Wahl(aus Sicht eines voreingestellten Automatismus.
Mal sehen, vermuten kann man ja viel. Optionen zum Einstellen gibts auch, wissen wie es geht ist besser. Nachschauen halt, vielleicht findet man was in der Doku oder im Oracle-Forum.
(Ne Grössenordnung > 1 Megatupel/Tabelle hatte ich bisher nicht).