所以,我有一个SELECT
和我的WHERE
选择有时添加很多,有时不是x = 1 OR x = 2
,我想可能会有100个。
这样做可以吗?或者它可以杀死性能?
这是更直观的例子
string sqlString = String.Format("SELECT * FROM categories WHERE {0}",
stringWithAlotOfORsStatment)
根据情况和用户选择的内容生成stringWithAlotOfORsStatment
不确定这个问题是否有意义:L
答案 0 :(得分:2)
您可以使用单个X=1 OR X=2...
替换多个X IN (1,2,3)
语句,例如:
SELECT * From SomeTable where X in (1,2,3)
我建议使用LINQ和EF或Dapper.NET来创建安全查询,而不是使用String格式来传递值列表。
在LINQ to EF数组或List.Contains映射到IN
子句:
var ids=new []{1,2};
var results = from r in ctx.SomeTable
where ids.Contains(r.x)
select r;
在Dapper中,您可以将数组作为参数传递:
string sql = "SELECT * FROM SomeTable WHERE x IN @ids"
var results = conn.Query(sql, new { ids = new[] { 1, 2, 3});