Indize für Like Statement bei SQL Server 2000

05/12/2008 - 10:18 von Thomas Weiler | Report spam
Hallo,

habe eine tabelle mit mehreren Spalten. Fünf davon muss ich in einem
like Statement abfragen:

select * from meinetabelle where spalte1+spalte2+spalte3+spalte4+spalte5
like '%suchbegriff%'

Ich weiß, ziemlich heftige Abfrage, muss aber wegen der Logik im
aufrufenden Programm leider so sein.

Ist es möglich, einen Indize auf die Tabelle zu legen, welcher diese
Abfrage beschleunigt. Habe schon einen auf alle 5 Spalten gelegt. Hat
aber keine Performanceverbesserung gebracht.

Hat mir jemand einen Tip?

Danke für alle Antworten.
 

Lesen sie die antworten

#1 Uwe Ricken
05/12/2008 - 10:36 | Warnen spam
Hallo Thomas,

ich stand auch schon einmal vor so einem Problem und habe es wie folgt
gelöst:

1. Neues Attribut "SortName"
2. Clustered Index auf "SortName"
3. Insert/Update-Trigger, der den Sortname immer auf Basis der anderen
Attribute eintràgt.

Alle Abfragen, die bisher die anderen Attribute verwendet haben, auf
SORTNAME umgebogen.
Der Performance-Vorteil war extrem - ich schàtze (bei etwa 500.000 DS) ca.
300%

HTH ;-)


Gruß, Uwe Ricken
MCP for SQL Server 2000 Database Implementation

db-Berater GmbH - 64390 Erzhausen
http://www.db-berater.de
http://www.memberadmin.de
http://www.conferenceadmin.de
____________________________________________________
dbdev: http://www.dbdev.org
FAQ: http://www.donkarl.com/AccessFAQ.htm

"Thomas Weiler" schrieb im Newsbeitrag
news:4938f1e7$0$32670$
Hallo,

habe eine tabelle mit mehreren Spalten. Fünf davon muss ich in einem like
Statement abfragen:

select * from meinetabelle where spalte1+spalte2+spalte3+spalte4+spalte5
like '%suchbegriff%'

Ich weiß, ziemlich heftige Abfrage, muss aber wegen der Logik im
aufrufenden Programm leider so sein.

Ist es möglich, einen Indize auf die Tabelle zu legen, welcher diese
Abfrage beschleunigt. Habe schon einen auf alle 5 Spalten gelegt. Hat aber
keine Performanceverbesserung gebracht.

Hat mir jemand einen Tip?

Danke für alle Antworten.

Ähnliche fragen