EXPLAIN ANALYZE
データベースの実行計画と、各ステップの実測時間を表示するSQLコマンド。SQLの性能調査の標準ツール。EXPLAINは計画だけを示し(コストなし)、ANALYZEはクエリを実際に実行して計測する。
注目すべきは、推定行数と実際の行数(100倍も違えば、プランナーの推測が外れている ― 統計情報が古い?)、ループ回数(外側の行が多いnested loopは問題)、Buffers(データの出どころ ― ディスクかshared_buffersか)。ツールとしては、explain.depesz.comが実行計画を色分けして表示する。PostgreSQLでは、ANALYZE + BUFFERS + FORMAT JSONで全情報が得られる。MySQLのEXPLAIN ANALYZEは8.0から存在する。実行計画を読めるようになることは、DBAの仕事の半分だ。