Christian Kruse: MySQL: Suche, wie am besten?

Beitrag lesen

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

--
Nur die Weisesten und die Dümmsten können sich nicht ändern.
http://wwwtech.de/