0

Users約500,000行のユーザーデータを含むテーブルがあります

ユーザーの氏名は 4 つの列に格納され、それぞれに型がありますnvarchar(50)

UserFullName4つの列の組み合わせに等しいと呼ばれる計算列があります

以下のように名前でテーブルを検索Stored ProcedureしていますUserslike operatior

Select * 
From Users 
Where UserFullName like N'%'+@FullName+'%'

このSPの実行中にパフォーマンスの問題が発生しました..時間がかかります:(

Like 演算子を使用した場合のパフォーマンス不足を克服する方法はありますか?

4

4 に答える 4

1

そのように like 演算子をまだ使用している間ではありません。先頭の % は、検索ですべての行を読み取り、一致を探す必要があることを意味します。そのような検索が本当に必要な場合は、全文索引の使用を検討する必要があります。

于 2013-03-04T11:28:58.537 に答える
0

計算列にインデックスが付けられていることを確認してください。そうすれば、毎回値を計算する必要がなくなります。SELECT

また、インデックス作成によっては、使用PATINDEXする方が速い場合がありますが、実際には、この種のものにはフルテキスト インデックスを使用する必要があります: http://msdn.microsoft.com/en-us/library/ms187317.aspx

于 2013-03-04T11:29:45.747 に答える
0

インデックスを使用している場合は、それで問題ありません。

したがって、次のように、列に id などを指定できます。

Alter tablename add unique index(id)
于 2013-03-06T09:18:49.617 に答える