update操作什么情况下会触发并行

大饼Ora 2017-08-09 11:46:20
在更新一张表tablea(大约500W数据)的时候,要判断某字段是否在另一张表tableb(大约100w)
sql 如下:
 update tablea a
set a.cola = 1
where exists (select 1 from tableb b where a.rn = b.rn)

其中tablea有两个索引(rn字段无索引),解释计划是tablea表全表扫描,没有并行PX COORDINATOR标志。

但是!!!!
重新create table tablea_bak as select * from tablea,也就是说tablea_bak没有索引,解释计划中就有并行标志PX COORDINATOR

请问这跟是否有索引有关吗?
...全文
445 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hsiao_King 2018-09-25
  • 打赏
  • 举报
回复
我估计是tablea 在建索引的时候,有指定并行度为1,而你数据库的默认并行度是8,没有索引,当然就是8咯。
a2396319077 2017-08-22
  • 打赏
  • 举报
回复
我也看看,也想知道QAQ
大饼Ora 2017-08-09
  • 打赏
  • 举报
回复
@卖水果的net 大神,求解惑
大饼Ora 2017-08-09
  • 打赏
  • 举报
回复
引用 2 楼 wmxcn2000 的回复:
select * from user_tables where table_name in ('tablea', 'tablea_bak') 看看这两个表的属性, 有什么区别。
啊。。。。degree一个是1一个是8。 越高并行越大。 这个degree的值为啥还不同,没有特殊设置过。
卖水果的net 2017-08-09
  • 打赏
  • 举报
回复
select * from user_tables where table_name in ('tablea', 'tablea_bak') 看看这两个表的属性, 有什么区别。

17,140

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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