了解Rails / PG解释

时间:2013-01-13 11:12:38

标签: ruby-on-rails-3 postgresql explain

我知道这是一个尴尬的问题..但我不明白EXPLAIN解释了什么..

我的查询是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)

1 个答案:

答案 0 :(得分:3)

查询计划显示查询的每个部分的性能成本。

例如:

  • cost = 0.00 - 估计的启动成本(在输出扫描开始之前花费的时间,例如,在排序节点中进行排序的时间。)
  • .. 1.05 - 估算的总费用(如果要检索所有行,则可能不是这样:例如,带有LIMIT子句的查询将不再支付总费用限制计划节点的输入节点。)
  • rows = 5 - 此计划节点输出的估计行数(同样,仅在执行完成时才会执行。)
  • width = 2861 - 此计划节点输出的行的估计平均宽度(以字节为单位)

来自here

有关详情,请查看thisthat链接。