【发布时间】:2012-02-21 09:07:38
【问题描述】:
我正在编写一个小测试应用程序,它连接到一个包含 2 个表的 SQL Server 数据库。表 1 是一个具有非唯一键的数据列表,它指向表 2 中的多行。目前我所做的是遍历表 1 中的每条记录,然后使用单独的查询从表 2 中获取相关记录。表 2 中有超过 2600 万条记录,这个过程需要很长时间。表 1 中的数据可能只有几百条记录,也可能多达 100 万条。
有没有办法加快这种数据访问?也许使用表连接在一个查询中获取所有数据?还是别的什么?
抱歉,我无法发布数据库表或当前代码,因为我处于保密协议之下,因为它是非常敏感的数据。无论如何,当前的代码在这里有点无关紧要,因为我正在寻找一种全新(更好)的方式来做到这一点。
请注意,我在 .NET 中使用 C# 中的 ADO。
编辑:我可以进行 JOIN 查询,但更多的是询问这是否会更有效地使用 ADO?我知道它通常会更有效,但不确定 ADO 是否可以处理这个问题。还在寻找一些示例 C# 代码来执行此操作。谢谢。
【问题讨论】:
-
很简单;您可以在两个表之间使用内部连接运算符。另一方面,更糟糕的情况是您尝试将 100 * 2600 万行加载到内存中。您希望查询总共返回多少行(您实际上从 Table2 中获得了多少行?)
-
表 2 中的每条记录可能会有大约 8-10 行。