2009-04-27 7 views
1

Ich habe die folgende SQL-Abfrage:SQL 2008 Volltextsuche mit ORDER BY und TOP-Klausel und keine Antwort vom Server

SELECT TOP 200 * FROM article WITH (nolock) 
WHERE CONTAINS(*,'"ram*" and "1*"') 
ORDER BY article_number 

ich keine Ergebnisse innerhalb von 10 Minuten zurück bin immer. Wenn ich die Abfrage nach ein paar Minuten stoppe, gibt es ein paar Datensätze zurück.

In article Tabelle gibt es 10.000 Datensätze. Der Volltextkatalog befindet sich auf 0-4-5 Feldern, so dass er nur 1 Tabelle enthält.

Wenn ich nicht die ORDER BY oder die TOP 200 Klausel schreibe, dann gibt es sofort mit der richtigen Antwort zurück.

Artikel Tabelle hat INDEX (Unique, clustered) auf Article_number.

Ich denke, es ist ein MS-SQL-Fehler 2008.

Das Problem ist auch in SQL 2008 SP1 vorhanden.

Ich verstehe wirklich nicht das Problem, bitte helfen.

Antwort

0

Reihenfolge von macht die Abfrage langsamer. Hat article_number einen Index? Versuchen Sie, einen Index zu erstellen.

1

Ich glaube nicht, dass Sie eine Suche mit Begriffen mit weniger als 3 Zeichen Länge durchführen können. Versuchen Sie als einen Versuch, nach etwas anderem zu suchen, wie:

select top 200 * from article with (nolock) WHERE contains(,'"ram" and "king*"') order by article_number 
+0

Aber es gibt zwei Wort getrennt mit und Wort. Es ist also vernünftig, so zu suchen. –