Hallo Andreas,
LIKE ansich ist nicht böse. Böse wird es erst, wenn LIKE '%...' oder LIKE '_...' benutzt
wird da dann kein Index mehr benutzt werden kann.ach, und LIKE '...%' benutzt den Index, soweit vorhanden?
Ja. Du musst dir den Index wie einen Baum vorstellen, z. B. so:
ABCD
/ \
AAD ACC
/ \ / \
AAB AAE ACA ACD
Stellst du jetzt eine Abfrage nach z. B. 'AAE', so kann die Datenbank den Pfad von ABCD über
AAD nach AAE gehen, da AAE kleiner als ABCD aber größer als AAD ist.
Fragst du nun nach 'AA%', so sieht die Datenbank, dass AA kleiner als ABCD ist. Deshalb
können jegliche in Frage kommenden Ergebnisse nur im linken Teilbaum enthalten sein. Der
nächste Knoten ist AAD, auf den das Muster 'AA%' ja bereits passt. Also ist der Teilbaum
ab AAD die Ergebnismenge.
So oder so ähnlich funktioniert das in Datenbanken, nur dass Datenbanken oft B-Bäume statt
Binär-Bäumen nutzen. B-Bäume sind Baum-Strukturen, die mehr als zwei Knoten haben können.
Grüße,
CK