我想知道如果我在PostgreSQL的準備語句,即:是否執行預先準備的聲明中跳過規劃階段的PostgreSQL
PREPARE newquery(int) AS
SELECT * FROM table1 WHERE somefield > $1;
將後端調用解析分析和規劃師,當我執行:
EXECUTE newquery(123);
我發現了一些documentation,它說的是PostgreSQL的「跳過」解析準備查詢的分析和規劃,並通過這樣做,顯著優化查詢執行。
我試圖通過覆蓋post_parse_analyze_hook
和planner_hook
,並從他們簡單地寫一些東西到日誌文件(即「計劃被稱爲」)測試這一點,所以我可以看到,如果規劃者和分析儀被調用。這種測試方法是否有效?
我很困惑,因爲每次執行EXECUTE newquery(some number);
解析分析器和計劃器都被調用。
我正在做這一切,因爲我想要統計查詢編譯了多少次以便更好地理解「查詢緩存」。
注意:我在一個會話中執行此操作。每次我連接到服務器時,我都會再次準備這些語句。
爲什麼計劃和解析分析器被調用?
我想爲'EXECUTE newquery(123);'調用解析分析器,'不適合查詢下劃線和計劃器,因爲查詢計劃可能取決於參數。好問題,但讓我們等待更有經驗的人。 – Abelisto