繁体   English   中英

SQL Join 查询执行的顺序是什么?

[英]What will be the sequence of SQL Join query execution?

当我们有多个Join查询、Derived table join查询和最后where条件时,SQL Join查询执行的顺序是什么?

哪个代码块将首先(或)在 SQL 中是最外层的代码块还是最内层的代码块?

select 
  TablePerson.PersonName, TablePet.PetName, TablePet.PetType
from 
  TablePerson
left outer join 
(
  select TablePet.ownerID, TablePet.PetName, TableTypes.PetType
  from TablePet 
  inner join TableTypes on TablePet.PetTypeID = TableTypes.TypeID
) 
  TablePet
on
  TablePet.OwnerID = TablePerson.PersonID

SQL 是一种声明性语言,而不是一种过程性语言。 SQL 查询表示结果集,而不是生成它的具体操作。

SQL 在处理查询时基本上分为三个步骤:

  • 解析查询
  • 优化查询以生成数据的最佳执行计划
  • 执行查询

完全相同的查询在不同时间可以有不同的执行计划,具体取决于数据和环境。

理解这一点非常重要。 您无法指定执行计划是什么。 优化器确定——不管 CTE 和子查询。 您可以通过在查询中提供提示来影响执行计划。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM