`
darrenzhu
  • 浏览: 802390 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Nested Loop Join和子查询

阅读更多
这2个是不同的概念,不要混淆在一起了
Nested Loop Join是From子句中的表的物理连接方式,逻辑连接方式是指Inner join, left/right outer join, full join

而delete from stu a
    where rowid not  in (select max(rowid)
                          from stu b
                         where a.name = b.name
                           and a.stno < b.stno);
中的子查询是不同的,这是子查询里面的“相关子查询”类型,相关子查询:子查询中使用了主查询中的某些字段,主查询每扫描一行都要执行一次子查询。跟Nested Loop Join虽然都有2层循环,但是不是同一概念。

SQL 基础--> 子查询
http://blog.csdn.net/leshami/article/details/5592002
Key Points
一、子查询
    子查询就是位于SELECT、UPDATE、或DELETE语句中内部的查询
  
二、子查询的分类
    单行子查询
        返回零行或一行
    多行子查询
        返回一行或多行
    多列子查询
        返回多列
    相关子查询
        引用外部SQL语句中的一列或多列
        子查询中使用了主查询中的某些字段,主查询每扫描一行都要执行一次子查询
    嵌套子查询
        位于其它子查询中的查询

三、子查询语法 */
    SELECT select_list
    FROM table
    WHERE expr operator
       (SELECT select_list
        FROM table);
        /*
    子查询(内部查询)在执行主查询之前执行一次
    然后主查询(外部查询)会使用该子查询的结果

四、子查询的规则
    将子查询括在括号中
    将子查询放置在比较条件的右侧
    只有在执行排序Top-N分析时,子查询中才需要使用ORDER BY 子句
    单行运算符用于单行子查询,多行运算符用于多行子查询

子查询
http://www.cnblogs.com/liunanjava/p/4227510.html
Key points
子查询就是指的在一个完整的查询语句之中,嵌套若干个不同功能的小查询,从而一起完成复杂查询的一种编写形式,为了让读者更加清楚子查询的概念。

子查询返回结果
子查询可以返回的数据类型一共分为四种:

单行单列:返回的是一个具体列的内容,可以理解为一个单值数据;
单行多列:返回一行数据中多个列的内容;
多行单列:返回多行记录之中同一列的内容,相当于给出了一个操作范围;
多行多列:查询返回的结果是一张临时表;
在WHERE子句中使用子查询
在WHERE子句之中处理单行单列子查询、多行单列子查询、单行多列子查询。

分享到:
评论

相关推荐

    转--一次HASH JOIN 临时表空间不足的分析和优化思路

    1. **查询优化**:检查SQL语句,尝试使用其他类型的JOIN,如Nested Loop JOIN或Merge JOIN,它们可能对内存需求较小。同时,考虑是否可以通过添加索引、减少JOIN条件或使用子查询来降低数据量。 2. **内存调整**:...

    Oracle的分页查询语句.docx

    在 Oracle 中,分页查询语句可以使用 ROWNUM 和子查询来实现。本文将详细介绍 Oracle 分页查询语句的格式、优化方法和应用场景。 一、分页查询格式 Oracle 的分页查询语句可以使用以下格式: SELECT * FROM ...

    行业-92 深入探索多表关联的SQL语句到底是如何执行的?(2).rar

    2. 减少JOIN数量:尽量避免不必要的多表关联,尽可能通过子查询或者预先计算中间结果来简化查询。 3. 选择合适的JOIN类型:根据数据分布和查询需求选择最合适的JOIN类型。 4. 使用物化视图:预先计算并存储结果,...

    对MySQL子查询的简单改写优化

    在上述例子中,MySQL可能选择先执行外部查询,然后对每个外部查询的结果进行子查询的匹配,这种执行顺序称为"嵌套循环连接"(Nested Loop Join)。对于大数据量的表,这种方法可能导致大量的冗余计算,特别是在子...

    oracle认证详解Oracle的几种分页查询语句

    在Oracle中,实现分页查询有两种常见方法:第一种方法是利用`ROWNUM`伪列结合子查询;第二种方法则是使用`FETCH FIRST`子句(在Oracle 12c及以上版本中可用)。本文将重点介绍第一种方法,并详细解析其背后的原理与...

    Oracle分页技术

    9. **优化建议**:在设计分页查询时,如果最内层查询复杂或包含排序,考虑使用子查询和索引来优化查询性能。同时,避免在内层查询中使用可能导致全表扫描的操作。 10. **索引的影响**:如果查询涉及的列有索引,...

    行业-90 再次重温写出各种SQL语句的时候,会用什么执行计划?(3).rar

    3. JOIN操作:包括嵌套循环JOIN(Nested Loop JOIN)、合并JOIN(Merge JOIN)、哈希JOIN(Hash JOIN),每种JOIN方法适用于不同的数据量和关系复杂度。 4. 排序和分组:ORDER BY和GROUP BY操作可能导致额外的排序和...

    Greenplum内核揭秘之查询优化.pptx.pdf

    这个查询计划是一个Nested Loop连接查询计划,包括两个扫描节点和一个索引扫描节点。这个查询计划的代价是0.29..9.32,表示执行这个查询计划需要的代价。 Greenplum 查询优化器是其核心组件之一,负责将查询语句...

    阿里巴巴公司DBA笔试题

    - 通过子查询和窗口函数,可以实现从大型数据集中提取特定范围的结果,例如,使用 `ROWNUM` 和 `ORDER BY` 结合 `MINUS` 操作符来获取指定范围内的记录,这在大数据量查询时非常实用。 以上知识点不仅限于理论层面...

    数据库课程设计-关系代数表达式的优化算法

    常见的连接算法有嵌套循环连接(Nested Loop Join)、排序合并连接(Sort-Merge Join)和哈希连接(Hash Join)。每种算法有其适用场景,例如,哈希连接适合于处理大规模数据,而排序合并连接则依赖于数据是否已排序...

    ORACLE+SQL效率优化.rar

    Oracle支持多种连接算法,如Nested Loop Join, Hash Join, Merge Join,根据数据量和关联条件选择最优。 7. **使用EXPLAIN PLAN**:Oracle的EXPLAIN PLAN工具可以帮助分析执行计划,找出潜在的性能问题。通过分析,...

    为什么有时ORACLE数据库不用索引来查找数据.doc

    另外,对于连接操作,只有当使用Nested Loop Join并且内表的连接列有索引时,索引才会被有效利用。而对于Sort Merge Join和Hash Join,即使索引存在,它们可能仅用于减少排序或避免全表扫描,但对查询速度的提升有限...

    通过分析SQL语句的执行计划优化SQL总结)

    2. **连接操作**:如果使用了嵌套循环连接(Nested Loop Join)且数据量大,可考虑改为更高效的连接方法,如哈希连接(Hash Join)或合并连接(Merge Join)。 3. **排序与分组**:对大量数据进行排序或分组可能会...

    85提纲挈领的告诉你,SQL语句的执行计划和性能优化有什么关系?.pdf

    - 对于多表连接的查询,执行计划会说明是使用何种类型的JOIN算法(如Nested Loop、Hash Join等)。 6. 函数的使用 - 如果SQL语句中包含函数,执行计划将体现这些函数对查询性能的影响。 三、性能优化的实践 1. ...

    Oracle SQL优化

    3. **使用连接优化**:避免使用嵌套循环连接(Nested Loop Join),特别是在大数据量时。考虑使用哈希连接(Hash Join)或归并连接(Merge Join),它们通常更适合处理大量数据。 二、索引策略 1. **选择合适的索引...

    filter优化

    - 如果可能,使用`LEFT JOIN`和`IS NULL`代替`NOT EXISTS`子查询,这样可以避免额外的`FILTER`操作。 2. **改进连接策略**: - 分析连接条件,尽可能使用索引驱动的连接方法,比如`INDEX FAST FULL SCAN`或`INDEX...

    阿里巴巴和淘宝网校园招聘数据库笔试题.docx

    1. **表连接方式**:四种常见的表连接方式包括哈希连接(Hash Join)、归并连接(Merge Join)、嵌套循环连接(Nested Loop Join,也称为Cluster Join)和索引连接(Index Join)。每种连接方式都有其适用场景和效率...

    《经典SQL优化实例剖析》公开课PPT.pdf

    MySQL目前仅支持嵌套循环连接(nested loop join)。在分析执行计划时,应从上到下阅读,查找`table`列中的`&lt;derived+id&gt;`,然后跳转到对应的`id`。`type`列中的`range`表示索引范围扫描,`ref`表示连接中的等号连接...

    海量数据库解决方案_韩国_李华植

    6.1 join和loop query的比较339 6.1.1 全部范围扫描方式下的比较341 6.1.2 局部范围扫描方式下的比较349 6.2 连接条件状态对表连接的影响351 6.2.1 连接条件正常353 6.2.2 连接条件一边异常358 6.2.3 连接条件两边...

    行业-107 透彻研究通过explain命令得到的SQL执行计划(8).rar

    - **连接优化**:学习不同类型的连接操作,如嵌套循环(Nested Loop Join)、合并连接(Merge Join)和哈希连接(Hash Join),并根据数据量和内存情况选择最合适的。 - **索引覆盖**:当查询仅需要索引中的列时,...

Global site tag (gtag.js) - Google Analytics