我的问题本质上很简单--查询一个数据库,并将输出写入一组文件(~1000)。
我有一个SQL查询需要从SQL Server上的C#执行。除了in子句中的一个值之外,查询相当简单。
例如,查询可能如下所示:
SELECT
ID, Name
FROM
MyTable
WHERE
SomeValue IN (/* list of values */)值列表大约有300个字符串,每个字符串6个字符。这些值最终将类似于("A00001“、"A00002”等),并由应用程序的用户指定为输入。
我最初的想法是将查询构建为一个长字符串,将每个值聚合在一起。然而,这似乎不是正确的方法,而且似乎很容易出错。我的下一个想法是使用存储过程,但我不确定应该如何将数据传递给它。如何以一种高效的方式构建此查询,以便可靠地传递数据?
我的另一个选择是从SQL Server读取所有数据,然后在收到结果时在C#中对其进行筛选。然而,如果我这样做,我将获得大约900万条记录,这似乎太多了,无法作为一个数据集读取到内存中。因为我是在解析大约5000条记录之后写入文件的,所以我不希望在分析接收到的数据时保持数据读取器与数据库的连接。
最好的方法是什么?
发布于 2012-01-31 03:10:15
如果您可以使用子查询(如egrunin所示)完成此操作,那么这将是最简单、最快的。如果你不能做到这一点(例如,你得到的只是一个值列表),那么你可能想要查看一个表值参数。
This question有一些读物可能会让你感兴趣。
https://stackoverflow.com/questions/9069250
复制相似问题