SQL Server 2008の全文検索–遅い

.net sql sql-server sql-server-2005 sql-server-2008
SQL Server 2008の全文検索–遅い

SQL Server 2008 SP2でasp.netを使用しています

全文検索を有効にしたテーブルが1つあります。

私のハードウェアは、2GHZクアッドコア、4GB RAM、SAS HDDです。

このテーブルには約* 500万レコード*があり、その構造は次のとおりです。

Pages table:

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

主キーIDにftsインデックスがあります。

次のクエリを使用してテーブルを検索しています。

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;

合計行が約500の場合、クエリは完了するのに* 1s *かかります。

合計行が約10,000である場合、完了するには* 5秒*かかります。

合計行が約100,000である場合、完了するには* 60s *かかります。

クエリに時間がかかるのはなぜですか?

私のクエリ、SQLサーバーに何か問題がありますか、それともハードウェアの問題ですか?

  1  0


ベストアンサー

全文検索は、varcharまたはテキストフィールド内のテキストを検索する場合にのみ有用であり、クエリを高速化しません。 そのためには、テーブルにさらにインデックスを追加する必要があります。

一般に、クエリは非常に複雑に見えますが、クエリが何をする必要があるかについては説明していません。 クエリを最適化する必要があると思います。

1


CONTAINSTABLE→ `CONTAINSTABLE(Pages、*、N ‘FORMSOF(INFLECTIONAL、movies)’、100)`によって返される一致の数を制限することを検討してください

1


タイトルとURLをコピーしました