PostgreSQL底層對查詢類語句的處理

2021-09-08 13:56:49 字數 860 閱讀 3713

postgresql對查詢類語句的優化過程,除了語法分析過程和詞法分析過程以外還需進行:

1、將原始語法樹轉換為查詢語法樹;

2、以查詢語法樹為基礎對其進行邏輯優化;

3、對查詢語句進行物理優化;

4、查詢計畫建立等過程。

根據本人知識沉澱以及相關資料的查閱,以下提供各位本人對查詢類語句優化過程的理解

(1)將原始語法樹轉換為查詢語法樹

經過詞法分析和語法分析後,postgresql需要將原始語法樹轉換為查詢語法樹並在轉換過程中進行語義方面合法性檢查。例如基表的有效性檢查和目標列的有效性檢查及展開等。transformstmt函式依據查詢語句的型別進行相應語法樹到查詢書的轉換工作。

(2)基於規則的查詢改寫

經過轉換操作後,查詢引擎獲得query型別的查詢樹,然後依據系統中定義的規則對查詢樹進行依據規則的改寫操作。例如檢視的改寫等。

(3)查詢邏輯優化

邏輯優化階段中,會對所有導致查詢變慢的語句進行等價變換,依據資料庫理論中給出的經典優化策略:選擇下推,從而盡可能減少中間結果的產生。即所謂的先做選擇操作,後做投影操作。

例如,對「in」和「exists」的處理,則是將查詢變為「join」連線查詢,使得子鏈結中的子查詢有機會與父查詢語句進行合併優化。

(4)查詢物理優化

該階段最主要的任務是選擇出一條查詢代價最優的查詢訪問路徑。依據邏輯優化階段所得的查詢語法樹為基礎,構建一條最小查詢訪問代價的查詢路徑。

(5)建立查詢計畫

在成功獲得一條查詢訪問路徑後,查詢引擎會以此為藍本建立對應的查詢計畫。

postgresql分頁查詢

資料庫中存了3000w條資料,兩種分頁查詢測試時間 第一種select from test table where i id 1000 limit 100 time 0.016s 第二種select from test table limit 100 offset 1000 time 0.003s ...

PostgreSQL實用查詢SQL

參考 postgresql實用查詢sql 檢視 資料庫 www.2cto.com select from pg database 檢視表空間 select from pg tablespace 檢視語言 select from pg language 檢視角色使用者 select from pg u...

PostgreSQL的查詢優化

postgresql 的查詢優化 資料庫管理系統中的 sql執行,有多種多樣,從 sql語句型別上講,有 ddl dml dql dcl。不同語句,被資料庫引擎執行,其執行方式 複雜程度都不相同。其中,最為複雜的,是 dql,查詢語句。查詢語句的執行,在資料庫中,又可以分為 2個階段,一是查詢計畫的...