Nic Lin's Blog

喜歡在地上滾的工程師

[Rails] 如何分析你的 SQL Query

分析 Database 的效能問題,需要知道在每個命令下,數據庫用了什麼計畫去執行這條 Query

EXPLAIN

MySQL / Postgres

都可以使用 EXPLAIN 進行分析,你可以在語句前加入這個命令,獲得完整的分析數據。

EXPLAIN SELECT * FROM users;
                        QUERY PLAN
----------------------------------------------------------
 Seq Scan on users  (cost=0.00..5.80 rows=81 width=836)
(1 row)

Rails

ActiveRecord::Relation 可以直接 call explain 這個 method

User.all.explain
Development [1] rocket(main)> User.all.explain
  User Load (425.4ms)  SELECT "users".* FROM "users"
EXPLAIN for: SELECT "users".* FROM "users"
                       QUERY PLAN
--------------------------------------------------------
 Seq Scan on users  (cost=0.00..5.80 rows=80 width=836)
(1 row)
comments powered by Disqus