SQL server 2008 Volltextsuche – SLOW

Ich benutze asp.net mit SQL server 2008 SP2

Ich habe einen Tisch mit Volltextsuche aktiviert.

Meine Hardware ist: 2GHZ Quad-Core, 4GB RAM, SAS HDD.

Der Tisch hat rund 5 Millionen Aufzeichnungen , und seine Struktur ist:

Pages table: ID (INT) GroupID (INT) GroupStart (bit) Col1 varchar(900) Col2 nvarchar(450) Col3 nvarchar(450) Col4 nvarchar(450) Col5 nvarchar(450) 

Ich habe einen ft-Index auf der Primärschlüssel-ID.

Ich verwende die folgende Abfrage, um die Tabelle zu durchsuchen:

 SELECT * FROM ( SELECT * , ROW_NUMBER() OVER( ORDER BY KEY_TBL.Rank DESC ) AS RowNumber , COUNT(*) OVER() as TotalRows FROM Pages p INNER JOIN CONTAINSTABLE(Pages, *,N' FORMSOF (INFLECTIONAL, movies)') AS KEY_TBL ON p.ID = KEY_TBL.[KEY] WHERE (p.GroupID IS NULL OR p.GroupStart = 1) ) LS WHERE RowNumber BETWEEN 0 AND 10 ORDER BY RowNumber ASC; 

Die Abfrage dauert 1s, um zu vervollständigen, wenn ganze Zeilen etwa 500 sind.

und dauert 5s, um zu vervollständigen, wenn ganze Zeilen etwa 10.000 sind.

und nimmt 60s, um zu vervollständigen, wenn Gesamtreihen ungefähr 100.000 sind.

Jede Idee, warum ist die Abfrage so lange?

Gibt es etwas falsch in meiner Abfrage, SQL server oder ist es ein Hardware-Problem?

Volltextsuche ist nur nützlich, um Text innerhalb von Varchar oder Textfeldern zu durchsuchen, wird es nicht beschleunigen Abfragen. Du müsst noch mehr Indizes zur Tabelle hinzufügen, um das zu tun.

Im Allgemeinen scheint die Abfrage übermäßig kompliziert, aber Sie haben nicht erklärt, was die Abfrage zu tun hat. Ich denke, die Abfrage muss optimiert werden.

Betrachten Sie die Beschränkung der Anzahl der von CONTAINSTABLE zurückgegebenen Streichhölzer -> CONTAINSTABLE(Pages, *,N' FORMSOF (INFLECTIONAL, movies)', 100 )