Laden...

Problem mit Oracle 10g

Erstellt von tomaten vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.270 Views
tomaten Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren
Problem mit Oracle 10g

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.

A
254 Beiträge seit 2007
vor 16 Jahren

Vermutung:

Die Einschränkung streut vielleicht nicht ausreichend.

tomaten Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren

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.

A
254 Beiträge seit 2007
vor 16 Jahren

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.

tomaten Themenstarter:in
402 Beiträge seit 2005
vor 16 Jahren

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.

I
1.739 Beiträge seit 2005
vor 16 Jahren

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).