【发布时间】:2010-12-30 10:31:39
【问题描述】:
我正在从事的项目有很多 IN 查询,例如:
SELECT something, anotherthing
FROM atable
WHERE something IN (value1, value2, value3)
这是一个在 IN 部分具有 3 个参数的查询示例,但可以使用 1 或 2 或 5 或 10 或 ... 参数执行相同的查询。 问题是每个查询在数据库中都有另一个执行计划,这使得它变慢了。
我想要这样的查询:
SELECT something, anotherthing
FROM atable
WHERE something IN (@value1, @value2, @value3)
或者这个:
SELECT something, anotherthing
FROM atable
WHERE something IN (@values)
我已经使用一些辅助函数完成了第一个查询,但是对于每个参数数量我仍然有不同的执行计划。这可以通过第二个来解决。
将数组作为数据库参数传递的最佳方式是什么?我正在使用 Oracle 和 SQL Server,欢迎使用它们的解决方案。
【问题讨论】:
标签: c# sql-server oracle ado.net