我有一个Oracle绑定查询,在我的C#程序中执行非常缓慢(大约2分钟),但在SQL Developer中运行非常快。它有两个参数,可以命中表的索引:
select t.Field1, t.Field2
from theTable t
where t.key1=:key1
and t.key2=:key2
另外,如果我删除绑定变量并创建动态SQL,它将像在SQL Developer中一样运行。
有什么建议吗?
顺便说一下,我正在使用ODP。
我有一个Oracle绑定查询,在我的C#程序中执行非常缓慢(大约2分钟),但在SQL Developer中运行非常快。它有两个参数,可以命中表的索引:
select t.Field1, t.Field2
from theTable t
where t.key1=:key1
and t.key2=:key2
另外,如果我删除绑定变量并创建动态SQL,它将像在SQL Developer中一样运行。
有什么建议吗?
顺便说一下,我正在使用ODP。
SELECT COUNT(*) FROM (
select t.Field1, t.Field2
from theTable t
where t.key1=:key1
and t.key2=:key2
)
在C#中,参数是否绑定到正确的数据类型?key1
和key2
列是否为数字,但参数:key1
和:key2
是字符串?如果是,查询可能会返回正确的结果,但需要进行隐式转换。这种隐式转换就像使用函数to_char(key1)
一样,会阻止索引的使用。