ADO.NET Oracle.DataAccess.Client性能不佳

时间:2015-09-21 15:57:45

标签: oracle performance ado.net

我遇到了一件非常奇怪的事情。

Oracle DB我有三张桌子。 Tab1Tab2具有相同的结构和索引以及大约20K行。 Tab3有大约15M行和FKTab1

我有这个问题:

SELECT t3.* FROM tab3 t3, tab1 t1 WHERE -- JOIN conditions and a few more

从我.Net应用Oracle.DataAccess.ClientSystem.Data.OleDb开始执行30 seconds

如果我使用tab2代替tab1运行相同的查询,则System.Data.OleDb执行相同的方式,但Oracle.DataAccess.Client需要大约1,5 minutes

  • 这是否有原因?
  • 这是一个错误吗?
  • 在不改变数据库结构的情况下,我有什么可以避免的吗?

修改

我最近发现了确切的结果。其中一个where子句是日期列。

对于我使用的参数:DbType.DateTime创建了一个OracleDbTypeOracleDbTypeEx TimeStamp的参数。

如果我使用DbType.DateOracleDbTypeOracleDbTypeEx都是Date。在这种情况下,即使使用Oracle.DataAccess.Client提供程序,性能也是正确的。

0 个答案:

没有答案