我有一个DataReader ...我使用DataReader的结果作为另一个DataReader的参数,该DataReader连接到具有Stored Procedure类型的命令。它现在运行得很快,但我担心数据库充满信息的时间。我怎样才能加快速度?感谢
答案 0 :(得分:4)
可能,您的初始查询可能会加入到sproc生成的结果中。
答案 1 :(得分:0)
基本上,您有2次数据库往返而不是一次。这个可能是一个性能问题,如果你经常调用和结果很小和你已经优化了查询和存储过程(所以相对于实际有用的工作,往返开销变得很重要。)
基准测试,看看这个功能是否真的是一个瓶颈。如果是,您可以尝试在SQL级别“合并”这两个操作,这样就可以一次性执行服务器大小。
我不确定这是否与您的问题有关,但请记住(取决于您的DBMS / ADO.NET提供商),可能支持也可能不支持同一连接上的多个活动阅读器。你打开第二个之前关闭了第一个DbDataReader
吗?如果不是,并且您碰巧切换到不同的DBMS,则可能会出现问题。如果内存对我很好,Oracle(ODP.NET)和DB2支持多个读者,而MS SQL Server和PostgreSQL(Npgsql)则不支持。