1つの可能な解決策を試しました。このソリューションの前は、クエリでも結果が返されず、接続タイムアウト エラーが発生していました。
私のクエリには、日付フィルターとその他の基準がありました。他のすべての基準は検索に似ていました。1 つの列キーワードが ntext 列で '%abc%' のように検索され、完全なテーブル スキャンを実行していました。
解決:
クエリを 2 つの部分に分割します。1) CTE (Common Table Express) の最初の部分 2) CTE のすべての検索基準を適用します。
WITH SearchData(Column1,Column2,Column3,Column4,........)
AS
(
SELECT Column1,Column2,Column3,Column4,...........
FROM myTable1 WITH(NOLOCK)
INNER JOIN MyTable2 WITH(NOLOCK)
ON MyTable1.id = MyTable2.Id
WHERE (MyTable1.CreationTime >= '2014-04-27' AND MyTable1.CreationTime <= '2014-05-01')
)
SELECT DISTINCT top 250 Column1,Column2,Column3,Column4
FROM SearchData
WHERE (ISNULL(Column1,'') LIKE @Column1 +'%' OR @Column1 IS NULL)
and (Column2 LIKE @Column2+ '%' OR @Column2 IS NULL)
...
...
...
...
AND (Column10 like '%'+@Column10+'%' or @Column10 IS NULL)
AND @Column1+@Column2+@Column3+........@Column10 <> ''
ORDER BY [CreationTime] DESC
それは私のために働いた。