GB
| BIG5
首頁
> 數據庫 > 其它 > 正文
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-EXPLAIN
編譯:何偉平 laser@zhengmai.com.cn (2001-04-21 22:01:05)
EXPLAIN
名稱
EXPLAIN 顯示語句執行細節
語法
EXPLAIN [ VERBOSE ] query
輸入
VERBOSE
顯示詳細查詢規劃的標志.
query
任何 query (查詢).
輸出
NOTICE: QUERY PLAN: plan
Postgres 端顯式的查詢規劃.
EXPLAIN
查詢規劃顯示發送的標志.
描述
這條命令顯示 Postgres 規劃器為所提供的查詢生成的執行規劃。執行規劃顯示查詢引用的表是如何被掃描的--- 是簡單的順序掃描,還是索引掃描等 --- 並且如果引用了多個表,採用了什樣的聯合算法從每個輸入的表中取出所需要的記錄。
顯示出來的最關鍵的部分是預計的查詢執行開銷,這就是規劃器對運行該查詢所需時間的估計(以磁盤頁面存取為單位計量)。實際上顯示了兩個成分:返回第一條記錄前的啟動時間,和返回所有記錄的總時間。對大多數查詢而言,關心的是總時間,但是,在某些環境下,比如一個 EXISTS 子查詢裡,規劃器將選擇最小啟動時間而不是最小總時間(因為執行器在獲取一條記錄總是要停下來)。同樣,如果你用一條 LIMIT 子句限制返回的記錄數,規劃器會在最終的開銷上做一個合理的折中以計算哪個規劃開銷最省。
VERBOSE 選項輸出規劃樹在系統內部的完整內容,而不僅僅是一個概要(並且還把它發送給 postmaster 日志文件)。通常這個選項只是對調試 Postgres 有用。
注意
在 Postgres 中只有很少的關使用優化器的開銷的文檔.通常的關查詢優化的開銷的估算可以在數據庫的手冊中找到.請參考 程序員手冊 中關索引和基因查詢優化器的章節獲取更多信息.
用法
顯示一個對只有一個 int4 列和128行的表的簡單查詢的查詢規劃:
EXPLAIN SELECT * FROM foo;
NOTICE: QUERY PLAN:
Seq Scan on foo (cost=0.00..2.28 rows=128 width=4)
EXPLAIN
對同一個擁有支持查詢 equijoin 條件的索引的表,EXPLAIN 將顯示一個不同的規劃:
EXPLAIN SELECT * FROM foo WHERE i = 4;
NOTICE: QUERY PLAN:
Index Scan using fi on foo (cost=0.00..0.42 rows=1 width=4)
EXPLAIN
最,同一個擁有支持查詢 equijoin 條件的索引的表,EXPLAIN 對使用一個聚集函數的查詢將顯示下面內容:
EXPLAIN SELECT sum(i) FROM foo WHERE i = 4;
NOTICE: QUERY PLAN:
Aggregate (cost=0.42..0.42 rows=1 width=4)
-> Index Scan using fi on foo (cost=0.00..0.42 rows=1 width=4)
注意這裡顯示的數字,甚至還有選擇的查詢策略都有可能在各個 Postgres 版本之間不同--因為規劃器在不斷改進。
兼容性
SQL92
在 SQL92 中沒有 EXPLAIN 語句.
(
http://www.fanqiang.com
)
進入【
UNIX論壇
】
相關文章
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-VACUUM
(2001-04-21 22:16:33)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-UPDATE
(2001-04-21 22:16:12)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-UNLISTEN
(2001-04-21 22:15:44)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-TRUNCATE
(2001-04-21 22:15:24)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SHOW
(2001-04-21 22:15:01)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SET
(2001-04-21 22:14:42)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SELECT INTO
(2001-04-21 22:14:19)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-SELECT
(2001-04-21 22:14:01)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-ROLLBACK
(2001-04-21 22:13:41)
PostgreSQL7.0手冊-用戶手冊-19. SQL命令-REVOKE
(2001-04-21 22:13:18)
===
更多相關
===
★ 樊強制作 歡迎分享 ★