Zum Inhalt springen

[ORACLE] Index über mehrere Felder


sayso

Empfohlene Beiträge

Hallo Kollegen,

ich wurde gerade etwas von einem Kollegen gefragt und konnte leider nicht mit 100% Sicherheit darauf antworten, deshalb frag ich hier mal lieber nach.

Folgendes Szenario:

Tabelle User

| ID |

| Userid |

| NName |

| VName |

| Ort |

| E-Mail |

Tabelle User hat einen Index der über folgende Felder gelegt wurde ( ID, Userid, NName, VName).

Nun wurde ich von einem Kollegen gefragt, ob der angelegte Index auch benutzt wird wenn er einen Select mit einer WHERE Bedingungen auf die Felder NName und VName macht.

Ich habe leider keine Ahnung wie der Index über mehrer Felder intern gestrickt ist, so daß ich hierzu keine 100% Aussage treffen konnte.

Ich kann natürlich das Statement absetzen und mir den EXECUTION PLAN ansehen, aber dann weiss ich zwar das es geht aber warum weiss ich immernoch nicht.

Also wird der Index dann verwendet wenn ein Select auf nur ein paar Felder eingeschränkt ist, aber der Index mehrere Felder beinhaltet ?

Wenn ja warum , wenn nein warum nicht....

Danke :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 Wochen später...
[PUSH]

Kann mir denn keiner die Frage beantworten ? :( :(

langsam, langsam, gibt noch ein leben neben der arbeit.

prinzipiell ja. selbst wenn das prädikat der where-klausel nicht in den führenden spalten eines index vorkommt, kann oracle den index verwenden. das ganze nennt sich SKIP SCAN INDEX ACCESS und gibt es seit 9i. hat ein paar einschränkungen bezüglich des indextyps (keine bitmap, domain, reverse oder function-bases indizes).

-j

Link zu diesem Kommentar
Auf anderen Seiten teilen

langsam, langsam, gibt noch ein leben neben der arbeit.

prinzipiell ja. selbst wenn das prädikat der where-klausel nicht in den führenden spalten eines index vorkommt, kann oracle den index verwenden. das ganze nennt sich SKIP SCAN INDEX ACCESS und gibt es seit 9i. hat ein paar einschränkungen bezüglich des indextyps (keine bitmap, domain, reverse oder function-bases indizes).

-j

Hallo Jasper,

sorry aber nachdem sich nach über einer Woche nichts auf meinen Post getan hat, habe ich gepushed :-)

Aber in meinen Fall kommen die Felder aus der where-Klauses im Index vor (siehe Beispiel NName, VName). In dem angelegten Index sind aber noch mehrere Felder enthalten als nur die beiden, die in der where-Klausel angegeben wurden.

Trifft dies dafür auch zu?

Danke für deine Antwort :nett:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Aber in meinen Fall kommen die Felder aus der where-Klauses im Index vor (siehe Beispiel NName, VName). In dem angelegten Index sind aber noch mehrere Felder enthalten als nur die beiden, die in der where-Klausel angegeben wurden.

Trifft dies dafür auch zu?

entscheidend ist, ob die führende spalte des index in der where-klausel enthalten ist.

wenn ja, wird normaler index scan access verwendet, wenn nicht, index skip scan access verwendet.

ob der index mehr spalten umfasst als in der where-klausel angegeben ist dabei irrelevant, Oracle kann die nicht benötigten indexeinträge ausfiltern. Oracle verwendet indizes, wenn mindestens eine spalte der where-klausel im index enthalten ist.

das beschreibt aber nur die möglichkeiten seitens Oracle, ob ein index verwendet wird hängt vom CBO ab. in deinem fall, index umfasst mehr spalten als in where-klausel angegeben, kann es sehr gut sein, dass der indexzugriff zu teuer wird.

-j

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...