使用 NOT EXISTS 重写查询的指南

库马尔

我们有一个针对不同来源运行的查询,每天多次。每次运行超过 40 分钟,我们正在尝试查看是否可以减少查询执行时间

查询所做的只是尝试向现有表添加新行(通过比较键)

                    SELECT          A.*
                    FROM            
                    ( 
                                       SELECT *
                                       FROM   A 
                    )
                    A
                    LEFT OUTER JOIN 
                                    ( 
                                           SELECT f1, f11
                                           FROM   B 
                                           WHERE  f13 IN  (  SELECT f13 FROM   C) 
                                    ) 
                    B 
                    ON              A.f1 = B.f1
                    AND             nvl(A.f11,'NULL') = nvl(B.f11,'NULL')
                    WHERE           isnull(B.f1) 
                    AND             isnotnull(A.f1) 

我想做什么


                    SELECT          A.* .
                    FROM            ( 
                                           SELECT * 
                                           FROM   A 
                                   ) 
                    A
                    WHERE NOT EXISTS  
                                    ( 
                                           SELECT 1
                                           FROM   B  WHERE  f13 IN  (  SELECT f13 FROM   C)
                                           and A.f1 = B.f1 and A.f11 = B.f11

                                    ) 

这项工作不仅会产生类似的结果,还会有助于减少执行时间。查询的小改进将大有帮助,因为该查询每天运行 8 次。

任何建议都会有所帮助。

左连接

在 HiveNOT EXISTS中将生成与left join + isnull filter.

您可以使用 UNION +row_number()进行增量更新,如这个答案https://stackoverflow.com/a/44755825/2700344,没有加入,它可能工作得更快

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用.htaccess重写网址需要指南

来自分类Dev

使用 GROUP BY ALL 重写查询

来自分类Dev

使用 URL 参数重写查询

来自分类Dev

是否可以重写NOT IN查询以使用索引?

来自分类Dev

使用查询字符串重写URL

来自分类Dev

重写查询以使用分析功能

来自分类Dev

使用Django db Api重写SQL查询

来自分类Dev

需要重写此查询,而无需使用相关子查询

来自分类Dev

需要重写此查询,而无需使用相关子查询

来自分类Dev

使用#params 重写url 以使用nginx 查询参数

来自分类Dev

使用GROUP BY和COUNT优化/重写LINQ查询

来自分类Dev

如何重写此MySQL查询以使用更少的内存?

来自分类Dev

使用.htaccess重写GET查询字符串

来自分类Dev

使用.htaccess重写URL(添加查询字符串)

来自分类Dev

Laravel-使用关系重写此SQL查询

来自分类Dev

如果MV使用ASNI Join,查询重写将失败

来自分类Dev

如何使用多个查询参数为url重写url?

来自分类Dev

如何使用Java API重写ElasticSearch DSL查询

来自分类Dev

使用apache重写规则发送查询字符串数据

来自分类Dev

将使用htaccess RewriteCond重写的PHP查询字符串

来自分类Dev

如何在Hive中使用多子查询重写SQL

来自分类Dev

不使用where子句重写查询以提高性能

来自分类Dev

重写与MySQL一起使用的postgresql查询

来自分类Dev

htaccess使用查询参数对URL进行内部重写

来自分类Dev

使用查询字符串重写多个URL的规则

来自分类Dev

从重写的 URL 中删除(现在)未使用的查询参数

来自分类Dev

使用包含 GROUP BY 子句的表连接重写查询

来自分类Dev

使用不能使用 JOIN 重写的子查询编写的查询示例?

来自分类Dev

为初学者优化MySQL查询(添加索引,重写查询,使用解释等)?

来自分类Dev

使用涉及日期限制的JPA2使用EntityManger重写Hibernate SessionFactory查询

Related 相关文章

  1. 1

    使用.htaccess重写网址需要指南

  2. 2

    使用 GROUP BY ALL 重写查询

  3. 3

    使用 URL 参数重写查询

  4. 4

    是否可以重写NOT IN查询以使用索引?

  5. 5

    使用查询字符串重写URL

  6. 6

    重写查询以使用分析功能

  7. 7

    使用Django db Api重写SQL查询

  8. 8

    需要重写此查询,而无需使用相关子查询

  9. 9

    需要重写此查询,而无需使用相关子查询

  10. 10

    使用#params 重写url 以使用nginx 查询参数

  11. 11

    使用GROUP BY和COUNT优化/重写LINQ查询

  12. 12

    如何重写此MySQL查询以使用更少的内存?

  13. 13

    使用.htaccess重写GET查询字符串

  14. 14

    使用.htaccess重写URL(添加查询字符串)

  15. 15

    Laravel-使用关系重写此SQL查询

  16. 16

    如果MV使用ASNI Join,查询重写将失败

  17. 17

    如何使用多个查询参数为url重写url?

  18. 18

    如何使用Java API重写ElasticSearch DSL查询

  19. 19

    使用apache重写规则发送查询字符串数据

  20. 20

    将使用htaccess RewriteCond重写的PHP查询字符串

  21. 21

    如何在Hive中使用多子查询重写SQL

  22. 22

    不使用where子句重写查询以提高性能

  23. 23

    重写与MySQL一起使用的postgresql查询

  24. 24

    htaccess使用查询参数对URL进行内部重写

  25. 25

    使用查询字符串重写多个URL的规则

  26. 26

    从重写的 URL 中删除(现在)未使用的查询参数

  27. 27

    使用包含 GROUP BY 子句的表连接重写查询

  28. 28

    使用不能使用 JOIN 重写的子查询编写的查询示例?

  29. 29

    为初学者优化MySQL查询(添加索引,重写查询,使用解释等)?

  30. 30

    使用涉及日期限制的JPA2使用EntityManger重写Hibernate SessionFactory查询

热门标签

归档