1. 程式人生 > >Postgresql檢視SQL語句執行效率

Postgresql檢視SQL語句執行效率

Explain命令在解決資料庫效能上是第一推薦使用命令,大部分的效能問題可以通過此命令來簡單的解決,Explain可以用來檢視 SQL 語句的執行效 果,可以幫助選擇更好的索引和優化查詢語句,寫出更好的優化語句。

Explain語法:explain selectfrom … [where ...]
例如:explain select * from dual;


這裡有一個簡單的例子,如下:
EXPLAIN SELECT * FROM tenk1;
                             QUERY PLAN
----------------------------------------------------------------
Seq Scan on tenk1 (cost=0.00..458.00 rows=10000 width=244) EXPLAIN引用的資料是: 1). 預計的啟動開銷(在輸出掃描開始之前消耗的時間,比如在一個排序節點裡做排續的時間)。 2). 預計的總開銷。 3). 預計的該規劃節點輸出的行數。 4). 預計的該規劃節點的行平均寬度(單位:位元組)。 這裡開銷(cost)的計算單位是磁碟頁面的存取數量,如1.0將表示一次順序的磁碟頁面讀取。其中上層節點的開銷將包括其所有子節點的開銷。這裡的輸出行數(rows)並不是規劃節點處理/掃描的行數,通常會更少一些。一般而言,頂層的行預計數量會更接近於查詢實際返回的行數。 現在我們執行下面基於系統表的查詢: SELECT
relpages, reltuples FROM pg_class WHERE relname = 'tenk1';
從查詢結果中可以看出tenk1表佔有358個磁碟頁面和10000條記錄,然而為了計算cost的值,我們仍然需要知道另外一個系統引數值。 postgres=# show cpu_tuple_cost; cpu_tuple_cost ---------------- 0.01 (1 row) cost = 458(磁碟頁面數) + 10000(行數) * 0.01(cpu_tuple_cost系統引數值