我有一个名为 MyProducts 的表,我想返回 item1 和 item2
SELECT item1, item2 from MyProducts
但是我希望它在我传入的字符串数组上进行过滤(来自 C#)。这是一个非常大的表,所以我的“IN”语句就出来了。我将如何使用 join 语句来做到这一点。谢谢!
最佳答案
IN
语句没有理由是“out”;最终,这是一种完全合理的过滤方式 - 让优化器担心各种选项。它当然不会受到 MyProducts
较大这一事实的影响。添加连接会增加工作量:但是,它不会减少“命中”次数或所涉及的工作量。例如,使用 dapper 来做到这一点只需:
string[] filter = ...
var rows = connection.Query(
"select item1, item2 from MyProducts where SomeField in @filter",
new {filter});
或者使用 LINQ:
string[] filter = ...
var rows = db.Products.Where(x => filter.Contains(x.SomeField));
关于c# - SQL Server SELECT 语句通过传入的字符串数组进行过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12746724/