选择不存在于另一表的数据几种写法

2024-02-26 11:58

本文主要是介绍选择不存在于另一表的数据几种写法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!


看看以下三种写法:

写法1:SELECT ... FROM A

 

WHERE A.key NOT IN (SELECT key FROM B);

 

 

 

写法2:SELECT ... FROM A

 

            LEFT JOIN B ON A.key = B.key

 

WHERE B.key is null;

 

写法3:SELECT ... FROM A

 

WHERE NOT EXISTS

 

(SELECT 'x' FROM B WHERE A.key = B.key);

 

写法1采用NOT IN的写法。很不幸DB2对于NOT IN通常采用TBSCAN(表扫描),这是效率很差的写法。最佳写法是第三种写法,如果B.key上有索引,它可以不用fetch B表的数据就可以完成查询。第二种写法采用对外表B is null判断进行过滤,效率稍差。

 

注:事实上,在DB2优化器的作用下,第二种写法与第三种写法的存取方案相关无几,只是第二种写法比第三种写法多了一步filter操作。

 

建议使用第3种写法,己使用第2种写法的代码也不必修改,因为其效率与第3种写法差不多。

 

例:

 

  SELECT A.*

 

  from EDS.TW_BCUST_200409 A LEFT OUTER JOIN KF2.TW_BCUST B ON

 

          A.TM_INTRVL_CD =B.TM_INTRVL_CD and A.CUST_ID =B.CUST_ID and

 

          A.USR_ID =B.USR_ID and A.BCUST_EFF_MO =B.BCUST_EFF_MO

 

  WHERE B.TM_INTRVL_CD is null

 

 

 

  SELECT *

 

  from EDS.TW_BCUST_200409 A

 

  where NOT EXISTS

 

     (select 'x'

 

     from KF2.TW_BCUST B

 

     WHERE A.TM_INTRVL_CD =B.TM_INTRVL_CD and A.CUST_ID =B.CUST_ID

 

             and A.USR_ID =B.USR_ID and A.BCUST_EFF_MO =

 

             B.BCUST_EFF_MO)

 

这两种写法对应的存取方案:

 

                                 

 

             RETURN                            RETURN     

 

             (   1)                            (   1)     

 

               |                                 |        

 

              BTQ                               BTQ       

 

             (   2)                            (   2)     

 

               |                                 |        

 

             FILTER                            HSJOIN     

 

             (   3)                            (   3)     

 

               |                              /      \    

 

             HSJOIN                     TBSCAN       TBSCAN

 

             (   4)                     (   4)       (   5)

 

            /      \                      |            |  

 

      TBSCAN       TBSCAN          Table:           Table:

 

      (   5)       (   6)          EDS              KF2   

 

        |            |             TW_BCUST_200409  TW_BCUST

 

 Table:           Table:         

 

 EDS              KF2            

 TW_BCUST_200409  TW_BCUST   

这篇关于选择不存在于另一表的数据几种写法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/748809

相关文章

鸿蒙中Axios数据请求的封装和配置方法

《鸿蒙中Axios数据请求的封装和配置方法》:本文主要介绍鸿蒙中Axios数据请求的封装和配置方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录1.配置权限 应用级权限和系统级权限2.配置网络请求的代码3.下载在Entry中 下载AxIOS4.封装Htt

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Java利用JSONPath操作JSON数据的技术指南

《Java利用JSONPath操作JSON数据的技术指南》JSONPath是一种强大的工具,用于查询和操作JSON数据,类似于SQL的语法,它为处理复杂的JSON数据结构提供了简单且高效... 目录1、简述2、什么是 jsONPath?3、Java 示例3.1 基本查询3.2 过滤查询3.3 递归搜索3.4

Flutter打包APK的几种方式小结

《Flutter打包APK的几种方式小结》Flutter打包不同于RN,Flutter可以在AndroidStudio里编写Flutter代码并最终打包为APK,本篇主要阐述涉及到的几种打包方式,通... 目录前言1. android原生打包APK方式2. Flutter通过原生工程打包方式3. Futte

MySQL大表数据的分区与分库分表的实现

《MySQL大表数据的分区与分库分表的实现》数据库的分区和分库分表是两种常用的技术方案,本文主要介绍了MySQL大表数据的分区与分库分表的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有... 目录1. mysql大表数据的分区1.1 什么是分区?1.2 分区的类型1.3 分区的优点1.4 分

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T

MySQL INSERT语句实现当记录不存在时插入的几种方法

《MySQLINSERT语句实现当记录不存在时插入的几种方法》MySQL的INSERT语句是用于向数据库表中插入新记录的关键命令,下面:本文主要介绍MySQLINSERT语句实现当记录不存在时... 目录使用 INSERT IGNORE使用 ON DUPLICATE KEY UPDATE使用 REPLACE

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Redis 中的热点键和数据倾斜示例详解

《Redis中的热点键和数据倾斜示例详解》热点键是指在Redis中被频繁访问的特定键,这些键由于其高访问频率,可能导致Redis服务器的性能问题,尤其是在高并发场景下,本文给大家介绍Redis中的热... 目录Redis 中的热点键和数据倾斜热点键(Hot Key)定义特点应对策略示例数据倾斜(Data S