日期:2014-05-16  浏览次数:21005 次

oracle11g的sql文执行时间相关请教
请教一个困扰我两天的问题。

假如有两个sql文

sql1

select a1,a2,a3,。。。。。。 a44

from a

where id in (1000个) or id in ( 1000个 ) ……..

select中共取得44列数据,where中共10000个id


sql2

select a1,a2,a3,。。。。。。 a44 。。。。。。 a60

from a

where id in (1000个) or id in ( 1000个 ) ……..

select中共取得60列数据,where中共10000个id


这两个sql文的返回结果分别是 44*10000 的方阵
以及 60*10000 的方阵

a表的id字段有主键唯一索引

困惑:

为什么在sqlplus中分析sql1比sql2执行时间短,
而在java中用statement.executeUpdate(sql)执行结果却是
sql2比sql执行时间短呢?

各位有无思路及建议之处。。。


------解决方案--------------------
SQL code
可不可以先试一下相同的时间,也是按照同样的顺序来执行?

------解决方案--------------------
看下执行计划,
索引是什么索引类型?B-TREE?
记得索引值越大效率越低,好像有个这么的论证。。。
------解决方案--------------------
探讨
1,select 20列 from a where id in (10001 ~ 20000)
2,select 40列 from a where id in (20001 ~ 30000)
3,select 60列 from a where id in (30001 ~ 40000)
4,select 80列 from a where id in (40001 ~ 50000)
sqlplus中执行时间
1<2<3<4
java中执行时间
1<3<2<4

------解决方案--------------------
sql文?
这么别扭的说法是日本人的习惯?
------解决方案--------------------
学习啦。