データベースの「裏側」をのぞき見しよう!― `EXPLAIN VERBOSE` で見える世界
こんにちは!データベースの世界に足を踏み入れたばかりの皆さん、毎日のお仕事や学習、本当にお疲れ様です。
データベースを使っていると、「どうしてこのクエリ(検索命令)はこんなに時間がかかるんだろう?」とか、「ちゃんとインデックスが使われているのかな?」と悩むこと、ありますよね。
そんな時、PostgreSQLには「EXPLAIN(エクスプレイン)」という、頼もしい「答え合わせツール」があります。でも、普通の `EXPLAIN` だけだと、「うーん、何となく分かったような……でも細かいことが見えない!」なんてことも多いんです。
そこで今日は、魔法の言葉`EXPLAIN VERBOSE`をご紹介します!
—
そもそも「EXPLAIN」って何?
料理に例えてみましょう。皆さんが「カレーを作って!」と注文したとします。
`EXPLAIN` は、厨房のシェフが「まず野菜を切って、次に炒めて、最後に煮込みます」という大まかな調理手順を教えてくれるようなものです。
これだけでも十分すごいんですが、時には「もっと詳しく教えてよ!」って思うこと、ありますよね。
- 「どの野菜を、どの包丁で切ったの?」
- 「どのメーカーのルーを使ったの?」
- 「味付けには何を使ったの?」
そんな細かい裏側まで根掘り葉掘り教えてくれるのが、`EXPLAIN VERBOSE` なんです。
—
「VERBOSE(バーボース)」ってどういう意味?
英語で「VERBOSE」は「言葉数が多い」「冗長な」という意味です。
つまり、「とにかく細かく、全部話します!」というモードなんですね。
これを使うと、普段は隠されている以下のような情報が丸裸になります。
- どんな計算式でデータを絞り込んだか: フィルタの条件式が、プランナ(データベースの司令塔)によってどう書き換えられたかが見えます。
- どのカラムをどこで使っているか: 曖昧な指定が、実際にはどの列を指しているのかが明確になります。
- 隠れた処理の全貌: 最適化のために裏側でこっそり行われている「おせっかい(処理)」まで見えてきます。
—
どうやって使うの?
使い方はとっても簡単。普段の `EXPLAIN` の後ろに `VERBOSE` をつけるだけです。
EXPLAIN VERBOSE SELECT FROM users WHERE age > 20;
これだけで、いつもの結果よりもずっと情報量の多い、少し「おしゃべり」な計画表が出てきます。
—
初学者が「VERBOSE」を味方につけるコツ
最初は「なんだか文字がいっぱい並んでいて怖いな」と思うかもしれません。でも、まずは「普段と何が変わったかな?」という視点で眺めてみてください。
例えば、`Output` という項目が増えているはずです。ここを見ると、「データベースが最終的にどの列を選んで、どんな順番で並べようとしているか」が、まるで設計図のように読み取れます。
もし「思ったよりこの処理に時間がかかっているな」と感じたとき、`VERBOSE` を使えば、「ああ、ここで余計な計算をしてたのか!」というヒントが見つかることが本当に多いんです。
—
最後に:データベースとの距離を縮めよう
データベースは、決して冷たい機械ではありません。私たちが投げる質問に対して、一生懸命「一番効率の良い方法」を考えてくれている、言わば「超優秀な助手」です。
`EXPLAIN VERBOSE` を使うことは、そんな助手と「もっと分かり合おう」とコミュニケーションをとることと同じです。
最初は難しく感じるかもしれませんが、少しずつ読めるようになると、データベースを操作するのがもっと楽しくなりますよ。ぜひ、皆さんの現場のクエリで試してみてくださいね。
それでは、また次回の記事でお会いしましょう!Happy Coding!
コメント