虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > DB2数据库 > 选择不存在于另一表的数据几种写法

选择不存在于另一表的数据几种写法
类别:DB2数据库   作者:码皇   来源:互联网   点击:

选择不存在于另一表的数据几种写法看看以下三种写法:写法1:SELECT FROM AWHERE A key NOT IN (SELECT key FROM B);写法2:SELECT FROM A LEFT JOIN B ON A key = B keyW
选择不存在于另一表的数据几种写法   看看以下三种写法: 写法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     
相关热词搜索: 选择 不存在 另一