SQL 嵌套查询执行顺序

Posted

技术标签:

【中文标题】SQL 嵌套查询执行顺序【英文标题】:SQL nested queries execution order 【发布时间】:2013-12-17 12:55:44 【问题描述】:

以下查询是针对 oracle 的 HR schema 完成的。我想逐步了解首先执行哪条指令,最重要的是,首先评估哪个SELECT 语句。

SELECT name, salary, dept_id
FROM employee
WHERE salary > 
    ( SELECT AVG(salary) FROM employee
       WHERE dept_no =
                  (SELECT dept_no FROM employee 
                    WHERE last_name =
                        ( SELECT last_name FROM employee
                          WHERE salary > 50000))) ;

PS:我知道这个查询可能无效,但这不是重点。我想知道的是指令的执行顺序。

【问题讨论】:

【参考方案1】:

请检查查询的解释计划,它将详细说明 oracle 如何执行查询。

explain plan for <sql query>
select * from table(dbms_xplan.display);

请参阅http://www.dwbiconcepts.com/database/22-database-oracle/26-oracle-query-plan-a-10-minutes-guide.html了解详细说明计划。

【讨论】:

以上是关于SQL 嵌套查询执行顺序的主要内容,如果未能解决你的问题,请参考以下文章

SQL语句执行流程与顺序原理解析

关于SQL语句的执行先后顺序,希望高手解答并写出原因。谢谢,

MySQL各部分的执行顺序

关于Oracle语句的执行顺序

Hive SQL语句执行顺序

顺序执行多条sql,一条执行失败则所有都执行失败;例如第一条成功,第二条失败的话,第一条也失败!急!