我有一个需要优化的巨大查询。在我编码之前就像
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
操作。当然,任何试图完全避免这种巨大查询的不同想法都将受到欢迎。