2013-01-13 78 views
0

我知道這是種一個尷尬的問題..但我不明白是什麼EXPLAIN解釋..理解的Rails/PG解釋

我查詢User.last,花了0.5秒以上 這可能是最簡單的的查詢,但似乎解釋有麻煩解釋它..

我不明白什麼後QUERY PLAN 什麼寬度?是什麼成本?它是如何解釋在查詢了多長時間?

[40] pry(main)> User.last 
    User Load (671.0ms) SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
    EXPLAIN (39.0ms) EXPLAIN SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
EXPLAIN for: SELECT "users".* FROM "users" ORDER BY "users"."id" DESC LIMIT 1 
          QUERY PLAN 
-------------------------------------------------------------------- 
Limit (cost=1.08..1.08 rows=1 width=2861) 
    -> Sort (cost=1.08..1.09 rows=5 width=2861) 
     Sort Key: id 
     -> Seq Scan on users (cost=0.00..1.05 rows=5 width=2861) 
(4 rows) 

回答

3

查詢計劃顯示查詢的每個部分的性能成本。

例如: - (時間消耗前輸出掃描可以啓動,例如,時間來進行排序的排序節點)

  • 成本= 0.00預計的啓動成本
  • ..1.05 - 預計的總開銷(如果所有的行都將被檢索的話,他們可能沒有。例如,用LIMIT子句的查詢將停止短支付限額規劃節點的輸入節點的總成本)
  • 行= 5 - 估計輸出的行數的這個規劃節點(同樣,只執行到完成。)
  • 寬度= 2861 - 行輸出的估計的平均寬度(以字節爲單位)的這個規劃節點

here

有關更多信息,請thisthat鏈接。