簡體   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