Hallo!

> Na, weil du dann ein "LIKE '%%'" bekommst.... Und das
> findet nun mal
> alles...

Und genau deshalb mag ich die Methode nicht. SQL Server optimiert die
Suchabfrage und ignoriert die Bedingung, andere Datenbank machen das
vielleicht nicht und starten statt dessen einen neuen Tablescan.
�berhaupt kann bei Deiner Suchabfrage kein Index verwendet werden.

Korrekt w�re es, die Bundesl�nder in einem indizierten Schl�sselfeld zu
suchen, bei den St�dten ist die Suche �ber LIKE '%...%' ebenfalls
�berfl�ssig, weil wohl kaum jemand, "heim" eingibt, um die 1.200
rheinhessischen Orte, die auf "heim" enden, zu finden. Ein "LIKE '...%'
reicht v�llig und verwendet sogar einen Index. Die T�tigkeiten sind
wahrscheinlich ebenfalls vorgegeben, und k�nnen dann �ber ein
indiziertes Schl�sselfeld gesucht werden.

Beispiel:

Bundesl�nder NW, RP, HE, SL, BW, ...

Im Formular stehen die Bundesl�nder in einer Mehrfachauswahlliste

<select ... multiple size="5">
   <option value="NW">Nordrhein-Westfalen</option>
   ...
</select>

Die Mehrfachauswahl liefert eine Zeichenkette mit allen ausgew�hlten
Werten durch Kommata getrennt, also z. B. "NW, BW, HE". Die
entsprechende Datenbankabfrage lautet dann:

... WHERE Region IN ('NW', 'BW', 'HE')

Wenn das Feld Region indiziert ist, dauert die Suche einen Wimperschlag.
Wenn Du alle WHERE-Bedingungen in optimierter Reihenfolge schreibst,
bekommst Du insgesamt eine flotte Suche.

Die optimale Reihenfolge ist:
1. Index-Suche mit "="
2. Index-Suche mit ">" oder "<" oder "BETWEEN"
3. Index-Suche mit "LIKE '...%'
4. Index-Suche mit "IN (...)"
5., 6. 7. 8. wie 1., 2. 3. 4. ohne Index
9. Freitextsuche mit "LIKE '%...%'"

Dadurch, dass man eine gro�en Datenmenge mit Index-Abfragen sehr schnell
klein macht, laufen auch die langsamen Suchabfragen in der kleinen
Datenmenge schneller.

Freundliche Gr��e
Joachim van de Bruck




> 
> Claudius
> 
> 
> | [aspdedatabase] als [EMAIL PROTECTED] subscribed
> | http://www.aspgerman.com/archiv/aspdedatabase/ =
> Listenarchiv
> | Sie k�nnen sich unter folgender URL an- und abmelden:
> |
> http://www.aspgerman.com/aspgerman/listen/anmelden/aspdeda
> tabase.asp


| [aspdedatabase] als [email protected] subscribed
| http://www.aspgerman.com/archiv/aspdedatabase/ = Listenarchiv
| Sie k�nnen sich unter folgender URL an- und abmelden:
| http://www.aspgerman.com/aspgerman/listen/anmelden/aspdedatabase.asp

Antwort per Email an