2017-10-28 14 views
0

SQL Serverデータベースに400,000以上の行を持つテーブルがあり、その名前は約.txtファイルのいくつかの名前から始まるフルネームを選択したい150以上の名前があるので、C#でコマンドをどのように実行すればいいですか?このように書くことはできますが、時間がかかりすぎて遅延や何らかのバグが発生する可能性があります。where句内の150以上の異なる条件内のクエリを選択してください

select * 
from tableName 
where fullName like '%Jack%' 
    or fullName like '%Wathson%' 
    --.... and so on 

答えて

1

これはコメントには長すぎます。

最初に、SQL Serverは非常に長いクエリを処理できます。少なくとも150k文字のクエリを作成しましたが、問題なく動作します。限界はそれよりかなり大きいです。

第2に、like文の束が長い時間がかかることは間違いありません。 likeへのオーバーヘッドがあります。

第3に、あなたのパターンはあなたのステートメントに適合しません。 の名前を特定のパターンで始めるにする場合は、パターンの先頭からワイルドカードを削除します。これには、SQL Serverが一致のためにFullNameの通常のインデックスを使用できるという追加の利点があります。

最後に、最初の文字列を実際に見ている場合は、フルテキストインデックス(ここでは1つの場所はstart)を考慮する必要があります。通常はlikeを使用するより効率的です。

関連する問題