码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Null Aware Anti Join 速记


    所谓 semi join,指的是 join 的两张表里只输出其中一侧,另一侧用于计算输出条件。通常,我们把输出侧叫“保留侧”,条件侧叫“非保留侧”。

    Tips:Anti join 要求我们在非保留侧不要输出任何辅助表达式(如计算分区id表达式),因为这一侧会被丢弃。

    semi join 下面有一个子类叫 semi anti join,它指的是计算输出条件的表达式是 NOT IN, <> ALL,这两个表达式是 NULL 敏感的。所谓 NULL 敏感是说 join 条件要写成:

    a.c1 = b.c1 OR a.c1 is null OR b.c1 is null

    对于这个条件无法使用 hash join 算法来处理,只能使用 nested loop join 来做笛卡尔积。

    注:Hash Join, Merge Join 两种算法都不适合用于做笛卡尔积运算。

    笛卡尔积太慢了。如果我们能:

    • 通过 schema 属性来确信 a.c1 NOT NULL, b.c1 NOT NULL
    • 或者 SQL 里存在类似表达式 where a.c1 IS NOT NULL AND b.c1 NOT NULL
      那么 join 条件可以改成 a.c1 = b.c1,此时可以使用 hash join 来高效处理。

    但现实中并不总是能满足上述条件。Oracle 开发了 NAAJ 专利算法,可以将任意 semi anti join 合法地改写成 hash join,核心思路是:

    1. 对于非 null 值,做正常的 hash join
    2. 对于左表、右表的 null 值,做特殊处理
    3. 如果右表为空,做特殊处理

    通过这种方式,使得 anti semi join 的执行性能得到数量级的提升。

    Oracle 论文中给出了一个例子:
    在这里插入图片描述

    • Enhanced SubQuery Optimizations in Oracle》第六节
    • http://structureddata.org/2008/05/22/null-aware-anti-join/
  • 相关阅读:
    基于STM32 CubeMX利用RTC实现带温湿度模块的万年历
    我看到的“无条件的爱”,常常是子女给父母的
    「AIGC」Python实现tokens算法
    2024CFA一级notes百度网盘下载
    修改ubuntu服务器fs文件最大打开数
    跑在笔记本里的大语言模型 - GPT4All
    全屏-多语言-tab页-主题切换
    安卓期末作业-仿外卖app-简单app(附下载资源)
    Redis解决缓存穿透,缓存雪崩,缓存击穿思路
    SSRF漏洞JAVA解决方案
  • 原文地址:https://blog.csdn.net/maray/article/details/126504197
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号