地方エンジニアの学習日記

興味ある技術の雑なメモだったりを書いてくブログ。たまに日記とガジェット紹介。

【MySQL】explain format=jsonが便利

yakst.com

explainのjsonフォーマットは5.7から存在します。explain format=json ${クエリ}と実行することでjson形式でexplainを表示することが出来ます。これの嬉しいポイントとしてはreadやevalに対するコストを表示してくれます。以下は実際の例です。

              "cost_info": {
                "read_cost": "707.25",
                "eval_cost": "0.54",
                "prefix_cost": "990.15",
                "data_read_per_join": "25K"
              },

それぞれの簡単な説明を記載します。

  • read_cost: 707.25

このコストは、データをディスクから読み込む操作の推定コストを表します。高い値は、物理的なディスクアクセスが多いことを意味し、特に大量のデータを扱うクエリでパフォーマンスに影響を与える可能性があります。

  • eval_cost: 0.54

評価コストとは、フィルタ条件や計算式の評価に要する推定コストを指します。この値は通常、比較的低いものですが、複雑な計算や関数が多用されている場合は増加する可能性があります。

  • prefix_cost: 990.15

この操作およびそれ以前のクエリ部分全体の累積コストです。この値は、クエリのこの部分までの全ての操作のコストを合計したもので、クエリの特定の部分が全体のコストにどの程度影響しているかを示します。

  • data_read_per_join: 25K

この結合操作によって読み込まれるデータ量の推定値です。この場合、約25キロバイトのデータが読み込まれると見積もられています。この指標は、クエリがデータベースからどれだけのデータを取得するかを示し、データベースのI/O負荷の指標として役立ちます。