Klar, dass er nicht binär suchen kann. Aber wenn ein Index so aufgebaut wäre, dass alle Zeichen des Namens in Kleinbuchstaben gespeichert sind, könnte er den Tablescan dann ja auf dem Index machen, anstatt das echte Dateifeld zu nehmen. Das "echte" Dateifeld müsste er ja immer erst in Kleinbuchstaben umwandeln, bevor er die like-Suche auf dem feld macht.

Zitat Zitat von Fuerchau Beitrag anzeigen
Hierzu betrachte mal den Like:

Like '%xxx%' => Kein Index möglich!
Like 'xxx%' => Index möglich

Der Grund ist eben, dass ein Index ja nicht über jeden Teilschlüssel (Substring) erstellt wird sondern über den gesamten Wert.
Ein Like '%...' erzwingt immer eine Tablescan, solange nicht andere Felder in der Whereklausel Indexverwendungen ermöglichen.

Wenn man ähnlich klingende Schlüssel sucht, kann man SOUNDEX() verwenden, wobei hier ein ggf. vorhandener berechneter Index verwendet werden kann:

where soundex(Namensfeld) = soundex('Meier')

in diesem Fall werden Meier, aber auch Meyer o.ä. geliefert.

Apropo embedded SQL:
exec sql set options ....