[英]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.