0

EXPLAINちょっと厄介な質問だとは思いますが、何を説明しているのかわかりません..

私のクエリはUser.last、0.5 秒以上かかりました。これはおそらく最も単純なクエリですが、説明するのに問題があるようです..

QUERY PLAN Whats width の後に続くものがわかりません。コストとは何ですか?クエリに時間がかかった場所はどのように説明されますか?

[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)
4

1 に答える 1

3

クエリ プランには、クエリの各部分のパフォーマンス コストが表示されます。

例えば:

  • cost=0.00 - 推定起動コスト (出力スキャンを開始できるようになるまでに費やされた時間。たとえば、ソート ノードでソートを実行する時間。)
  • ..1.05 - 推定総コスト (すべての行が取得された場合、そうではない可能性があります。たとえば、LIMIT 句を含むクエリは、Limit プラン ノードの入力ノードの総コストを支払う前に停止します。)
  • rows=5 - この計画ノードによって出力される推定行数 (これも、完了まで実行された場合のみです。)
  • width=2861 - この計画ノードによって出力される行の推定平均幅 (バイト単位)

ここから。

詳細については、このリンクとそのリンクを確認してください。

于 2013-01-13T11:24:13.130 に答える