一次HASH JION过慢优化(2)

简介: 原创 转载请注明出处 可以看到进行了笛卡尔集,再HASH JION的时候使用了过多的临时表空间用于存储HASH值,达到了2.6M。而笛卡尔集是test1和test2做的。
原创 转载请注明出处


可以看到进行了笛卡尔集,再HASH JION的时候使用了过多的临时表空间用于存储HASH值,达到了2.6M。
而笛卡尔集是test1和test2做的。其实我们是有连接条件的,连接条件是
filter("A"."test"="B"."test" AND "A"."test1" I
              OR "A"."test2"="B"."test3")
但是优化器没有这样使用,而是先做了笛卡尔集然后再做了HASH JION然后把连接条件做为了过滤条件。
所以解决问题的关键在于让优化器先做连接条件再HASH JION。
所以我改写了以上片段如下:
其实就是用use_concat提示来告诉执行计划用UNION ALL的方式来代替OR

USE_CONCAT
The USE_CONCAT hint forces combined OR conditions in the WHERE clause of a query to be transformed into a compound query using the UNION ALL set operator. Generally, this transformation occurs only if the cost of the query using the concatenations is cheaper than the cost without them.
The USE_CONCAT hint disables IN-list processing and OR-expands all disjunctions, including IN-lists.

最后修改完的语句如下,这个语句运行时间不到3秒。
SELECT  *
  FROM (SELECT row_.*, rownum rownum_
          FROM (select *
                  from (select  /*+  use_concat */  a.payrefdate,
                               ..................
                        union all
                       ..............
                        union all
                        ............)
 WHERE rownum_ > 0;

现在非常快了。

目录
打赏
0
0
0
0
91
分享
相关文章
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
MySQL查询优化:提速查询效率的13大秘籍(合理使用索引合并、优化配置参数、使用分区优化性能、避免不必要的排序和group by操作)(下)
418 0
数据倾斜问题之数据倾斜的定义如何解决
数据倾斜问题之数据倾斜的定义如何解决
132 0
|
8月前
|
SQL
数据倾斜问题之处理特殊值/空值导致的数据倾斜如何解决
数据倾斜问题之处理特殊值/空值导致的数据倾斜如何解决
64 0
Mysql使用left join连表查询时,因连接条件未加索引导致查询很慢
Mysql使用left join连表查询时,因连接条件未加索引导致查询很慢
201 0
索引下推,这个点你肯定不知道!
索引下推(Index Condition Pushdown) ICP 是Mysql5.6之后新增的功能,主要的核心点就在于把数据筛选的过程放在了存储引擎层去处理,而不是像之前一样放到Server层去做过滤。 虽然这是一个比较简单的概念,但是可能很多不细心的同学对于索引下推会存在一个小小的误区,至于是什么,请看下文。
索引下推,这个点你肯定不知道!
为什么索引可以让查询变快?终于有人说清楚了!
上表是一张真实的数据库表,其中每一行是一条记录,每条记录都有字段。假设上面的数据库是一个有10万条记录的大数据库。现在,我们想从10万条记录中搜索一些内容,那么挨着一个一个搜索无疑将花费很长的时间,这个时候我们在数据结构与算法里学的二分查找法就派上了用场。
为什么索引可以让查询变快?终于有人说清楚了!
Greenplum 优化CASE - 对齐JOIN字段类型,使用数组代替字符串,降低字符串处理开销,列存降低扫描开销
标签 PostgreSQL , 数组 , 字符串 , 字符串处理 , JOIN , where , 类型一致性 背景 Greenplum通常被用作OLAP,在一些用户使用过程中,可能因为数据结构设计,SQL问题等原因导致性能不佳,虽然通过增加节点可以解决问题,但是如果能优化的话,可以节约不少硬件资源。
1571 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等