最適化する必要がある巨大なクエリがあります。私のコーディングの前は
SELECT [...] WHERE foo = 'var' [...]
の 2000 の異なる値に対して 2000 回実行されますfoo
。私たちは皆、それがどれほど遅いかを知っています。さまざまなクエリをすべて参加させることができました
SELECT [...] WHERE foo = 'var' OR foo = 'var2' OR [...]
もちろん、2000 の連鎖比較があります。その結果、巨大なクエリが生成され、以前よりも数秒速く実行されましたが、十分ではありませんでした。私が使用しているクエリの作成には時間がかかると思われるStringBuilder
ため、1999 年のクエリを保存することで得た時間が次のように無駄になっています。
StringBuilder query = new StringBuilder();
foreach (string var in vars)
query.Append("foo = '").Append(var).Append("' OR ");
query.Remove(query.Length - 4) // for removing the last " OR "
そのため、その文字列の構築を最適化するための回避策を使用できるかどうかを知りたいです。おそらく、次のようなSQLトリックとの比較で異なる値を結合します
SELECT [...] WHERE foo = ('var' OR 'var2' OR [...])
そのため、いくつかの操作を節約できますAppend
。もちろん、その巨大なクエリをまったく回避しようとする別のアイデアは大歓迎です。