MySQL で取得済みの実行計画(FORMAT=JSON、EXPLAIN ANALYZE のツリー、コピーしたコンソール表)を貼り付けてください。各テーブルのアクセス種別・選択キー・推定行数を一覧し、全表走査・一時テーブル・filesort を指摘します。データベースへの送信やクエリの実行は行いません。
ブラウザ内でローカルに実行このプランレビューは読み取り専用です。クエリの実行や SQL の送信は行いません。
MySQL で取得済みの実行計画を貼り付けてください。FORMAT=JSON の出力、EXPLAIN ANALYZE のツリー、mysql クライアントのコンソール表のいずれかです。ページは見つけたテーブルごとにアクセス種別・選択キー・推定行数を一覧し、全表走査・一時テーブル・filesort を指摘します。処理はすべてブラウザ内で完結し、クエリの実行やデータベースへの送信は行いません。
読み取るのは MySQL 自身が出力する3つの形式で、数値をでっち上げることはありません。行数の推定がない計画では 0 ではなく — を表示します。推定値はサーバーの統計情報に基づくプランナーの見積もりであり、実行結果の実測ではありません。
アクセス行は、アナライザーが計画の中で見つけたテーブル項目の数で、クエリが触れる行数ではありません。1項目が下の表の1行に対応します。推定行数は読み取れる rows_examined_per_scan(または rows)を合計し、どの項目にも数値がなければ — を表示します。全表走査はアクセス種別 ALL、インデックス走査は INDEX を数え、キー参照は実際にキーが選ばれた項目を数えます。
表は計画自身の用語を保ちます。アクセス種別、選択キー、絞り込み、そしてキーが選ばれなかったときの候補キー、結合バッファ、付加条件を補足列に示します。possible_keys は候補の一覧であって選択されたインデックスではないため、選択キーの列には出しません。
MySQL 8 はサブクエリやマテリアライズしたビューを table オブジェクトの中に置きます(attached_subqueries、materialized_from_subquery)。アナライザーはその中まで辿るため、内側のテーブルも独立した行として表示されます。同じテーブルを2回走査する自己結合も、1行にまとめず2回報告します。
EXPLAIN ANALYZE のツリー出力は行単位で読み取ります(Table scan、Index scan、Index range scan、Index lookup など)。ツリーに実測行数があれば推定値の隣に表示します。コンソール出力はタブ区切りまたはパイプ区切りの列として読むため、mysql クライアントの表をそのまま貼り付けられます。アクセス行が250を超える計画は250行で打ち切り、その旨をレポートに記します。
このページは MySQL に接続できないため、クエリを実行できず、スキーマや統計情報も見えず、サーバーが今もこの計画を選ぶかは判断できません。ANALYZE なしで取得した計画は推定値だけを持ち、別バージョンの MySQL の計画はこのページが知らないキーやアクセス種別を出します。
実行のたびに前回の内容は残しません。新しい解析はカウンター・指摘・表・レポートを置き換え、EXPLAIN の計画ではないテキストは古いレポートを残さずパネルを空にします。レポートには形式・カウンター・すべての指摘が入るため、数値と注意書きが一緒に持ち出せます。