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