分析 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)