一个sql语句查询优化的问题

Wazy_csdn 2019-07-19 09:43:17
有一句蛮长的sql,查询得非常慢,但是加了一句union all之后速度从六分钟变成了十秒,但是我实在不理解为何会这样。具体的sql语句如下图
当我在该sql语句的B部分中加了一条无关紧要的union all之后,速度从上图的六分钟变成了十秒

这里A部分和B部分单独拿出来查询,速度都很快只用几秒,当他们连接查询的时候就变得非常慢,但是加了一句union all之后速度就提升了数十倍。实在搞不懂为何会这样,求大神指导一下,左连接在从表里面加一句union all会使速度变快的原因
...全文
239 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Wazy_csdn 2019-07-22
  • 打赏
  • 举报
回复
引用 6 楼 AHUA1001 的回复:
你是在数据库工具中执行的与吧,不加UNION ALL 的时候,是不是会有很多数据,查询后,只显示前边的几条。如果是加完UNION ALL后,是不是会显示你加的那个UNION ALL 。

这个是sql server,整个查询语句只有两百多数据,不加union all查询出数据到所有数据加载完毕之后需要6分钟,加了之后只有十几秒,且加不加union all查询出来的结果是一样的
Wazy_csdn 2019-07-22
  • 打赏
  • 举报
回复
引用 7 楼 minsic78 的回复:
这不是oracle吧?
在oracle下,你加个无关紧要的union all查询不至于出现这种情况,除非是缓存影响,从第一次几分钟到第二次第三次几秒钟是有可能的,但也与你加不加这个union all查询无关

在oracle我确实没有遇到这种问题,这个是sql server
Wazy_csdn 2019-07-22
  • 打赏
  • 举报
回复
引用 6 楼 AHUA1001 的回复:
你是在数据库工具中执行的与吧,不加UNION ALL 的时候,是不是会有很多数据,查询后,只显示前边的几条。如果是加完UNION ALL后,是不是会显示你加的那个UNION ALL 。

这个是sql server不是oracle,sql server版块太冷清了,所以移到oracle这边问问
Wazy_csdn 2019-07-19
  • 打赏
  • 举报
回复
引用 3 楼 唐诗三百首 的回复:
建议查看SQL实际执行计划, 看主要成本在哪个环节.
这件事情是发生在两个数据库中,这两个数据库里面的表结构都是一样的,但里面的资料有或许差别 我将这两个数据库比作数据库X和数据库Y,当我将这句sql放在数据库X中时,不加Union all他执行得也很快,但是将这句sql放在数据库Y中,执行得就很慢,需要注意的是,X数据库内的资料量要比Y数据库的资料量要大,却导致了数据量少的数据库Y反而查询更慢。且两个不同数据库相同的sql的执行计划不一样,后来我在数据库Y的sql中加入union all之后,执行计划就和数据库X变得一样了 不同数据库,相同的表结构,同一sql语句的执行计划不一样
卖水果的net 2019-07-19
  • 打赏
  • 举报
回复
两个子查询,再做关联查询后,应该有“谓词推进”。
唐诗三百首 2019-07-19
  • 打赏
  • 举报
回复
建议查看SQL实际执行计划, 看主要成本在哪个环节.
Wazy_csdn 2019-07-19
  • 打赏
  • 举报
回复
引用 1 楼 唐诗三百首 的回复:
请检查这2个字段的数据类型是什么? 如果不一致,可能导致A left join B时性能不佳. Db_Model.Rix_No Db_Matrix.Rix_No
两个表的字段类型是一样的哦
唐诗三百首 2019-07-19
  • 打赏
  • 举报
回复
请检查这2个字段的数据类型是什么? 如果不一致,可能导致A left join B时性能不佳. Db_Model.Rix_No Db_Matrix.Rix_No
minsic78 2019-07-19
  • 打赏
  • 举报
回复
这不是oracle吧? 在oracle下,你加个无关紧要的union all查询不至于出现这种情况,除非是缓存影响,从第一次几分钟到第二次第三次几秒钟是有可能的,但也与你加不加这个union all查询无关
AHUA1001 2019-07-19
  • 打赏
  • 举报
回复
你是在数据库工具中执行的与吧,不加UNION ALL 的时候,是不是会有很多数据,查询后,只显示前边的几条。如果是加完UNION ALL后,是不是会显示你加的那个UNION ALL 。

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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