这是我的朋友在电话中问到的问题。他编写的C# 3.5程序正在从具有350,000条记录的患者主表中填充数据集。它为Oracle使用微软ADO.NET驱动程序。ExecuteQuery方法需要30秒以上的时间来填充数据集。但是,在Toad中,相同的查询(获取约20,000条记录)所需时间不到3秒。他没有在程序中使用任何事务。它在用于搜索的列(名称)上有一个索引。
以下是我建议的一些替代方案:
1)尝试使用数据读取器,然后填充数据表,并将其传递给表单以将其绑定到组合框(这不是一个好主意,因为这可能需要同样的时间)
2)试用Oracle的ADO.NET驱动程序
3)使用Ants分析器查看是否可以识别任何特定的ADO.NET行。
有没有人遇到过类似的问题,有什么方法可以解决这个问题。
谢谢,Chak。
发布于 2009-12-27 13:40:03
你真的需要做一个扩展的SQL跟踪,看看速度慢是从哪里来的。这里有一篇来自Cary Millsap (方法R的,以前在Hotsos工作)的论文,详细介绍了如何做到这一点:
http://method-r.com/downloads/doc_details/10-for-developers-making-friends-with-the-oracle-database-cary-millsap
发布于 2009-12-22 23:24:45
Toad通常只获取前x行(在我的设置中是500行)。因此,请仔细检查比较是否有效。
然后,如果可能,您应该尝试将db内容从表单内容中分离出来,以查看db是否占用了时间。
如果是这样的话,尝试使用Oracle库,如果速度更快的话,我们已经看到最新的Oracle驱动程序与标准的Microsoft驱动程序之间有50%的改进。
发布于 2009-12-22 17:16:33
不知道他用来完成任务的实际代码,也不知道他实际获取的行数(我希望他不会读完所有的350K?)不可能说出任何对他有帮助的话。
为了清楚起见,让他在问题中添加一个代码片段。
https://stackoverflow.com/questions/1945068
复制相似问题