关于insert into table select的不可思议现象

flyforlove 2009-12-10 08:34:02
有个insert into table select的SQL,select部分确实是慢了点儿,不过单独执行select部分4秒钟就能返回,但是如果执行insert into table select,是死活没有结果,其实select部分是没有返回数据的(也就是抽出结果为0条)。

其他插入同一个table的SQL,如果select部分有结果的话,反而很快。

谁能解释这种现象?
...全文
341 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppp_10001 2009-12-12
  • 打赏
  • 举报
回复
我觉得2楼是智慧的回答
yonghenghxq 2009-12-12
  • 打赏
  • 举报
回复
学习,帮顶
yang677888 2009-12-12
  • 打赏
  • 举报
回复
正在学Oracle 看看 帮顶了
雨枫 2009-12-12
  • 打赏
  • 举报
回复
我还没入门,不知道,不过学习了,以后留意一下
sql_xeppp 2009-12-11
  • 打赏
  • 举报
回复
加上 for update no wait
试试
sharpidd 2009-12-11
  • 打赏
  • 举报
回复
锁了吧.
sxq129601 2009-12-11
  • 打赏
  • 举报
回复
堵塞
inthirties 2009-12-11
  • 打赏
  • 举报
回复
执行计划不同
有这样的可能性。
ojuju10 2009-12-11
  • 打赏
  • 举报
回复
--楼主用下面的语句查询下,是不是有记录,如果有记录,就阻塞了,需要kill session
select b.sid,b.machine,c.object_name,a.oracle_username,
a.locked_mode,b.osuser,
'alter system kill session '''||b.sid||','||b.serial#||''';'
from v$locked_object a,v$session b,all_objects c
where a.session_id=b.sid and a.object_id=c.object_id;
ojuju10 2009-12-11
  • 打赏
  • 举报
回复

很久没有反应,可能就是堵塞了
碧水幽幽泉 2009-12-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 flyforlove 的回复:]
谢谢大家的回复。

表没锁,最后发现是执行计划的问题。
单独运行select部分,和运行insert into table select,其中select部分的执行计划居然差别很大。
后来把select里面exists部分,都改为inner join(被join字段做了group),居然速度很快,见鬼。
[/Quote]
执行计划的问题? 表没被锁?
Rotel-刘志东 2009-12-11
  • 打赏
  • 举报
回复
表被锁定了。
flyforlove 2009-12-11
  • 打赏
  • 举报
回复
谢谢大家的回复。

表没锁,最后发现是执行计划的问题。
单独运行select部分,和运行insert into table select,其中select部分的执行计划居然差别很大。
后来把select里面exists部分,都改为inner join(被join字段做了group),居然速度很快,见鬼。
didiaodezhu 2009-12-11
  • 打赏
  • 举报
回复
是不是還有別的對表的操作在進行
dawugui 2009-12-10
  • 打赏
  • 举报
回复
[Quote=引用楼主 flyforlove 的回复:]
有个insert into table select的SQL,select部分确实是慢了点儿,不过单独执行select部分4秒钟就能返回,但是如果执行insert into table select,是死活没有结果,其实select部分是没有返回数据的(也就是抽出结果为0条)。

其他插入同一个table的SQL,如果select部分有结果的话,反而很快。

谁能解释这种现象?
[/Quote]
这个表被琐住了?
Adebayor 2009-12-10
  • 打赏
  • 举报
回复
应该是你的table被锁住了
wh62592855 2009-12-10
  • 打赏
  • 举报
回复
最好能把你具体操作的代码和过程都说出来
这样才好发现问题
crazylaa 2009-12-10
  • 打赏
  • 举报
回复
开两个sql窗口,一个没commit吧?;
shiyiwan 2009-12-10
  • 打赏
  • 举报
回复
查下是不是死锁了

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧