LIKE vs. CONTAINS (MSSQL 2000)

Andreas Dunstheimer

Erfahrenes Mitglied
Hallo Leute,

ich habe ein kleines Problem, und hoffe ihr könnt mir helfen, oder vielleicht einen Tip geben.

Ich arbeite im Moment an einem Projekt, wo ich über ein Webinterface den Inhalt einer Tabelle durchsuche. Da die Suche mit LIKE %suchstring% recht langsam ist, habe ich es über den Volltextindex vom MS SQL-Server versucht, komme aber zu einem recht unbrauchbaren Ergebnis.

Ok, hier die Details:

Ich benutze MS SQL-Server 2000 mit SP3 (daran wird sich leider auch so schnell nichts ändern)

SELECT DVDDB_Dateien_DatentraegerID
FROM DVDDB_Dateien
WHERE DVDDB_Dateien_langname LIKE '%serie%'


Dieser SQL-String bringt mir 512 Treffer, braucht aber einige Sekunden.

SELECT DVDDB_Dateien_DatentraegerID
FROM DVDDB_Dateien
WHERE CONTAINS( DVDDB_Dateien_Langname, '"*serie*"')


Dieser SQL-String ist bedeutend schneller (nur wenige Millisekunden), liefert aber leider nur 6 Treffer.


Der Volltextindex ist vollständig. Es sind alle Einträge der Tabelle DVDDB_Dateien enthalten.


Wieso funktioniert der zweite String nicht richtig? Laut MSDN sollte das gehen (auch mit MS SQL-Server 2000) !


Gruß Dunsti
 
... auch wenn das in dem Artikel so da stehen mag, ohne * wird er nix finden, wo das Wort nicht alleine steht... d.h. ein * davor und dahinter ist legitim (habs eben mal getestet).

Ganz interessant übrigens: Daß man dort einen * benutzen muss und kein % funktioniert ist laut Microsoft ein Bug und nicht gewollt <g>.
 

Neue Beiträge

Zurück