2025年9月25日: PostgreSQL 18 釋出!
支援的版本:當前 (18) / 17 / 16 / 15 / 14 / 13
開發版本:devel
不支援的版本:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2

51.1. 查詢路徑 #

這裡我們簡要概述查詢為了獲得結果必須經過的階段。

  1. 必須建立應用程式與PostgreSQL伺服器的連線。應用程式將查詢傳輸給伺服器,並等待接收伺服器返回的結果。

  2. 解析階段檢查應用程式傳輸過來的查詢的語法是否正確,並建立一個查詢樹

  3. 重寫系統接收解析階段建立的查詢樹,並查詢要應用於該查詢樹的任何規則(儲存在系統目錄中)。它執行規則體中給出的轉換。

    重寫系統的一個應用是實現檢視。每當對檢視(即虛擬表)進行查詢時,重寫系統會將使用者查詢重寫為訪問檢視定義中給出的基表的查詢。

  4. 規劃器/最佳化器接收(重寫後的)查詢樹,並建立一個將作為執行器輸入的查詢計劃

    它透過首先建立所有可導致相同結果的路徑來做到這一點。例如,如果關係上有一個要掃描的索引,則掃描有兩種路徑。一種可能性是簡單的順序掃描,另一種可能性是使用索引。接下來,估計每條路徑的執行成本,並選擇成本最低的路徑。成本最低的路徑將被擴充套件為一個執行器可以使用 的完整計劃。

  5. 執行器遞迴地遍歷計劃樹,並按照計劃所代表的方式檢索行。執行器在掃描關係時利用儲存系統,執行排序連線,評估條件,並最終返回派生的行。

在接下來的章節中,我們將更詳細地介紹上述每個專案,以更好地理解PostgreSQL的內部控制和資料結構。

提交更正

如果您在文件中看到任何不正確、與您對特定功能的體驗不符或需要進一步澄清的內容,請使用此表格來報告文件問題。