0

我有一个字符串类型的值列表,我目前正在循环这个并在许多 1000 个 SQL 查询的“WHERE”中使用它,我想知道我是否应该运行一个查询并在结果数据表中进行过滤。

我已经使用多重查询方法实现了这一点,并且直到选择标准增长到数千个时才注意到任何性能问题。我已经使用 StopWatch 类进行了测试,看起来每个循环有 95% 的时间用于执行 SQL 查询,磁盘上表大小的总和小于 50MB,这将导致更高的内存成本。

SQL 的形式为:

SELECT col1, col2, col3 FROM table1 WHERE col4 = @criteria

我看到的过滤数据表的方法主要来自这篇文章如何过滤数据表?

DataView dv = new DataView(dataTable);
dv.RowFilter = "query"; //query = String.Format("col4 = {0}", criteria)
DataTable dataTableFiltered = dataTable.AsEnumerable()
          .Where(row => row.Field<String>("col4") == criteria)
          .CopyToDataTable();
dataTable.select("query").CopyToDataTable()

真的有两部分问题,我应该转换为数据表方法中的过滤,如果是这样,哪种方法可能工作得足够快?

获取数据后,将其写入结构如下的文本文件:

@Criteria1
Values
@Criteria2
Values
Values
Values
@Criteria3
...
4

0 回答 0