Databases Reference
In-Depth Information
20.9
Indizierung mit SQL
Das RDBMS hat zunächst eine Menge zu tun, wenn wir mit create index einen
Index anlegen. Im SQL-Standard sind zwar keine Regeln für die Organisation ei-
nes Index hinterlegt, es handelt sich aber eigentlich immer um einen B + -Baum
oder eine seiner zahlreichen Varianten. Aufgrund seiner Struktur ist dieser Index
bestens geeignet, um Datensätze zu ermitteln, die Prädikaten genügen, die Ver-
gleichsoperatoren wie = , > oder < enthalten. Wenn wir in Prädikaten aber mit
anderen Operationen arbeiten, kann das RDBMS den Index nicht nutzen. Enthält
unsere select -Anweisung etwa im where -Teil den Ausdruck
name like '%bert'
ist es dem RDBMS nicht mehr möglich, im Baum zu navigieren; es muss die Ta-
belle sequenziell durchsuchen.
Gelegentlich findet man Entwickler, die bei Textvergleichen grundsätzlich mit
dem like -Operator arbeiten und Prädikate wie das folgende definieren:
name like 'Donald'
Ein cleverer Optimierer sollte hier zwar erkennen, dass das Textmuster überhaupt
keine Platzhalter enthält, und daher trotzdem den Index nutzen - aber wer weiß,
auf welche Systeme die Anweisung im Laufe ihres Lebens trifft.
Wollen wir komplexere Textmuster verwenden und dabei auch eine zügige Su-
che ermöglichen, benötigen wir spezielle Textindexe, wie sie einige RDBMS zur
Verfügung stellen.
Denkbar sind auch ganz andere Prädikate, wie etwa
where similar(bild, '/home/Sonnenuntergang.jpg')
Es soll untersucht werden, ob die Inhalte einer blob -Spalte Ähnlichkeit mit ei-
nem Bild haben, auf dem offensichtlich ein Sonnenuntergang abgebildet ist. Auch
hier gibt es RDBMS-Produkte, die die blob -Daten so indizieren können, dass pas-
sende Bilder rasch gefunden werden. Die Syntax der create index -Anweisung
haben die Hersteller dazu - natürlich herstellerspezifisch - angepasst.
Kommen wir aber zurück zum Standardindex. Mit
create index idxctr on konten(zaehler)
haben wir einen Index für die Spalte zaehler angelegt.
Mit
create index idxctr on konten(saldo, zaehler)
könnten wir einen Index auf die Kombination zweier Spalten anlegen, wenn etwa
Bedingungen wie
Search WWH ::




Custom Search