insert into () values(select /*+parallel(64)*/复杂sql) 里面的子查询可能几分钟能返回 ,加上外面的insert之后 执行时间估计能到两个小时

【 使用环境 】生产环境 or 测试环境
【 OB or 其他组件 】
【 使用版本 】
【问题描述】清晰明确描述问题
【复现路径】问题出现前后相关操作
【问题现象及影响】

【附件】
有碰到insert into () values(select /+parallel(64)/复杂sql) 里面的子查询可能几分钟能返回 ,加上外面的insert之后 执行时间估计能到两个小时 这种情况吗

1 个赞

多少行数据,是不是大事务了

insert 后面实际返回一行数据。只不过里面的select 需要查一个4亿行的大表,单独执行select 可能就十分钟。加上前面的insert 就得俩小时了

对比下2个SQL的执行计划


没看出里面跟外面有啥区别

1、sql命令行登录的时候是否有加“-c” 加上-c 表示不忽略hint注释。
2、explain extended select /+parallel(64) /复杂sql \G
3、explain extended insert into () values(select /+parallel(64) /复杂sql \G

登录时候已经加了-c
上图就是 insert 和 里面复杂sql的执行计划

你是要看outputs & filters 还是 optimization info

  • OB 版本提供一下:
    show variables like ‘version_comment’;

  • 涉及的表结构 show create table xxx \G,可以脱敏

  • 涉及的 insert into () values(select /+parallel(64) /复杂sql) 完整sql,可以脱敏。

insert后边加并行的hint呢?