首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【DB笔试面试590】在Oracle中,什么是反连接(Anti Join)?

♣ 题目部分 在Oracle中,什么是反连接(Anti Join)? ♣ 答案部分 反连接(Anti Join)也是一种特殊的连接类型,通常用于从一个表中返回不在另一个数据源中的数据行。...为了解决NOT IN和 ALL对NULL值敏感的问题,Oracle推出了改良的反连接,这种反连接能够处理NULL值,Oracle称其为Null-Aware Anti Join,如下例: SELECT...在Oracle 11gR2中,Oracle是否启用Null-Aware Anti Join受隐含参数“_OPTIMIZER_NULL_AWARE_ANTIJOIN”控制,其默认值为TRUE,表示启用Null-Aware...Anti Join。...如果把该参数的值修改为FALSE,那么表示Oracle就不能再用Null-Aware Anti Join了,而又因为NOT IN对NULL值敏感,所以Oracle此时也不能用普通的反连接。

1.2K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    一脸懵逼学习oracle

    ASC升序   DESC降序   注意:order by子句在select语句的结尾   select * from users order by user_id;可以按照多个字段进行排序操作...; 2:Oracle连接:         使用连接在多个表中查询数据;         在where子句中写入连接条件;         在表中有相同列时,在列明之前加上表名前缀; 3:连接多给表:...子句使连接的表产生叉集;          (b):叉集和笛卡尔积是相同的;     (c)select *        from employee        cross join development...  (7)自然连接(等同于等值连接)      (a)natural join 子句,会以两个表中具有相同名字的列为条件创建等值连接         (b)在表中查询满足等值条件的数据         ...        (c)两个表在连接过程中除了返回满足连接条件的行以外还返回两个表中不满足条件的行,这种连接称为满外连接     oracle的左外连接:     select a.

    2.1K70

    SQL递归查询知多少

    在不需要常规使用视图时替换视图,也就是说,不必将定义存储在元数据中。 启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。...条件2:是连接条件,其中用PRIOR表示上一条记录。 比如CONNECT BY PRIOR Id = Parent_Id就是说上一条记录的Id 是本条记录的Parent_Id。...PRIOR被置于CONNECT BY子句中等号的前面时,则强制从根节点到叶节点的顺序检索,为自顶向下查找。...如:CONNECT BY PRIOR Id=Parent_Id PIROR运算符被置于CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,为自底向上的查找。...CONNECT BY FSID= PRIOR FTID AND FSTABLENAME =PRIOR FTTABLENAME ) select * from flow_temp 为啥要讲这个呢,我们可以在oracle

    4.5K80

    高效SQL语句必杀技

    Oracle会首先扫描基表(FROM子句中最后的那个表)并对 记录进行排序,然后扫描第二个表(FROM子句中最后第二个表),最后将所有从第二个表中检索出的记录与第一个表中合适记录进行合并。...10) 用Where子句替换...,NOT IN子句引起一个内部的排序与合并.因此,无论何时NOT IN子句都是最低效的,因为它对子查询中的表执行了一个全表 遍历.为避免该情形,应当将其改写成外部连接(OUTTER JOIN...DISTINCT 对于一对多关系表信息查询时(如部门表和雇员表),应避免在select 子句中使用distinct,而使用exists来替换...,使用union替换or更高效 -->即使当列object_id与owner上不存在索引时,使用union仍然比or更高效(在Oracle 10g R2与Oracle

    1.4K20

    数据库—索引

    利用索引来保证数据的完整性 直接条件查询的字段:在SQL中用于条件约束的字段 查询中与其它表关联的字段:字段常常建立了外键关系 查询中排序的字段:排序的字段如果通过索引去访问那将大大提高排序速度 查询中统计或分组统计的字段...l 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num is null可以在num上设置默认值...0,确保表中num列没有null值,然后这样查询:select id from t where num=0 l 应尽量避免在 where 子句中使用!...l 应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:select id from t where num=10 or num=20可以这样查询:select...id from t where num=10 union all select id from t wherenum=20 l 应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描

    57930

    java面试(3)SQL优化

    Update 语句,如果只更改1、2个字段,不要Update全部字段,否则频繁调用会引起明显的性能消耗,同时带来大量日志 对于多张大数据量(这里几百条就算大了)的表JOIN,要先分页再JOIN,否则逻辑读会很高...当ORACLE找出执行查询和Update语句的最佳路径时, ORACLE优化器将使用索引. 同样在联结多个表时使用索引也可以提高效率....)的查询时,避免在SELECT子句中使用DISTINCT....避免在索引列上使用NOT:当ORACLE”遇到”NOT,他就会停止使用索引转而执行全表扫描....用>=替代> ;用IN来替换OR ;用UNION替换OR;用UNION-ALL 替换UNION ( 如果有可能的话);用WHERE替代ORDER BY 总是使用索引的第一个列: 如果索引是建立在多个列上

    3.2K20

    Mysql - JOIN 详解

    0 索引 JOIN语句的执行顺序 INNER/LEFT/RIGHT/FULL JOIN的区别 ON和WHERE的区别 1 概述 一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生虚拟表(vt...,则将左表的列在新表中置为NULL INNER JOIN 拿上文的第三步添加外部行来举例,若LEFT JOIN替换成INNER JOIN,则会跳过这一步,生成的表vt3与vt2一模一样: +------...a.userid where i.userid = 1003; 第一种情况LEFT JOIN在执行完第二步ON子句后,筛选出满足i.userid = a.userid and i.userid = 1003...在执行完第二步ON子句后,筛选出满足i.userid = a.userid的行,生成表vt2;再执行第三步JOIN子句添加外部行生成表vt3;然后执行第四步WHERE子句,再对vt3表进行过滤生成vt4...替换成INNER JOIN,不论将条件过滤放到ON还是WHERE里,结果都是一样的,因为INNER JOIN不会执行第三步添加外部行。

    4.9K51

    数据库MySQL中的JOIN详解

    0 索引 JOIN语句的执行顺序 INNER/LEFT/RIGHT/FULL JOIN的区别 ON和WHERE的区别 1 概述 一个完整的SQL语句中会被拆分成多个子句,子句的执行过程中会产生虚拟表(vt...添加外部行 LEFT JOIN会将左表未出现在vt2的行插入进vt2,每一行的剩余字段将被填充为NULL,RIGHT JOIN同理 本例中用的是LEFT JOIN,所以会将左表user_info剩下的行都添上...,则将左表的列在新表中置为NULL INNER JOIN 拿上文的第三步添加外部行来举例,若LEFT JOIN替换成INNER JOIN,则会跳过这一步,生成的表vt3与vt2一模一样: +------...i.userid = a.userid where i.userid = 1003; 第一种情况LEFT JOIN在执行完第二步ON子句后,筛选出满足i.userid = a.userid and i.userid...在执行完第二步ON子句后,筛选出满足i.userid = a.userid的行,生成表vt2;再执行第三步JOIN子句添加外部行生成表vt3;然后执行第四步WHERE子句,再对vt3表进行过滤生成vt4

    6.2K10

    SQL简介

    代替子查询 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引 应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描...=0 应尽量避免在 where 子句中使用!...应尽量避免在 where 子句中使用or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,(可以使用union) in 和 not in 也要慎用,否则会导致全表扫描(能用 between 就不要用...避免在索引列上使用计算,也就是说,应尽量避免在 where 子句中对字段进行表达式操作和函数操作,这将导致引擎放弃使用索引而进行全表扫描。...用Where子句替换having子句 创建索引,但无法命中索引。

    2.7K20

    oracle 查询转换初探

    Oracle‍‍查询转换初探 作者‍:邱大龙‍‍ 概述 Oracle查询转换器的作用是把原始sql重写为语义相同的语句,目的是为了获得更高效的sql。...join。...,cube子句或者rollup子句 例如下面的例子: 视图合并 视图合并是指对包含视图的查询做出转换,使查询只包含基表。...星型转换 星型转换为提高星型查询的效率发生,在原有条件基础上会产生新的子查询对事实表做过滤,然后通过对事实表相应连接列的位图索引做位图操作,达到过滤事实表结果集的目的。...注意到执行计划中先对customers根据过滤条件cu.country_id=52789得到临时表SYS_TEMP_0FD9D6601_11F1D1,后续步骤中每次需要访问customers表时则由临时表来替换

    1.6K50

    ORACLE不能使用索引的原因分析

    如果该参数设为“rule”,则不论表是否分析过,一概选用RBO,除非在语句中用hint强制。   ...其次,检查被索引的列或组合索引的首列是否出现在PL/SQL语句的WHERE子句中,这是“执行计划”能用到相关索引的必要条件。   第三,看采用了哪种类型的连接方式。...ORACLE的共有Sort Merge Join(SMJ)、Hash Join(HJ)和Nested Loop Join(NL)。...我们可以采用对该索引列进行单独分析,或用analyze语句对该列建立直方图,对该列搜集足够的统计数据,使ORACLE在搜索选择性较高的值能用上索引。   第十,索引列值是否可为空(NULL)。...ORACLE将引用缺省值,在某些情况下会对执行计划造成影响。

    1.2K40

    如何管理SQL数据库

    注意:如果您未在UPDATE语句中包含WHERE子句,该命令将替换表中每行中保存的数据。...子句查询多个表 JOIN子句用于创建组合来自两个或多个表的行的结果集。...INNER JOIN将返回两个表中具有匹配值的所有记录,但不会显示任何没有匹配值的记录。 通过使用外部 JOIN子句,可以从两个表中的一个表中返回所有记录,包括在另一个表中没有相应匹配的值。...外部JOIN子句写为LEFT JOIN或RIGHT JOIN。 一个LEFT JOIN条款从“左”表,只有匹配的记录从“右”表返回所有记录。...在外部JOIN子句的上下文中,左表是FROM子句中引用的表,右表是JOIN语句后引用的任何其他表。以下将显示来自table_1的每条记录,仅显示来自table_2匹配的值。

    5.5K95

    扫码

    添加站长 进交流群

    领取专属 10元无门槛券

    手把手带您无忧上云

    扫码加入开发者社群

    相关资讯

    热门标签

    活动推荐

      运营活动

      活动名称
      广告关闭
      领券