コンテンツにスキップ

ラジオの話題11:20行しか返さないのに、なぜ遅い?

← ラジオの話題一覧 · 元の教材・詳しい解説

今日の話題:①LIMIT 20の下にある仕事 → ②indexがあるのに全表走査 → ③速いSQLを100回送る。

気になったところから自由に。順番や時間は決めず、話しやすい話題だけ拾って構いません。

話を広げるメモ

  • 上位20行を決めるために、何行を比べた?
  • Sortが20行返したから、20行しか読んでいない?

小ネタ:入力行数と出力行数

top-NのSortでも候補を大量に読む場合がある。一方、絞り込みと順序をindexが供給すれば早期終了できる場合がある。物理的に20行だけ触ったという保証とは別。

話の芯:返した量と、調べた量は違う。

話を広げるメモ

  • ほとんどの行が条件に一致したら?
  • ANALYZE後にSeq Scanへ変わるのは悪化?

小ネタ:選択と実測

plannerは見積もりでplanを選ぶ。多数の行に一致するなら順次走査が候補になる。教材の実験では統計更新でplanは変わったが、高速化までは観測していない。

話の芯:planの名前だけで勝敗を決めない。

話を広げるメモ

  • 一回8msでも直列100回なら約800msの演習例。
  • slow query一覧だけ見ていたら気づける?

小ネタ:N+1とNested Loop

アプリからSQLを何度も送るN+1と、DB内のJOIN方式であるNested Loopは別。SQLの単発時間に加えて、リクエスト当たりの発行回数を見る。

話の芯:一回の速さと、全体の仕事量を並べる。

「この話を、次に調査や設計をするときどう思い出したいか?」

既存の学習振り返り教材から話題を選び、AIが小ネタとして再構成しました。説明・設計例と、本人の回答・実測の記録は別です。数値例は記載した仮定に基づくもので、本人の本番実績ではありません。

定義の詳細・前提・一次資料・対象版・確認日は元の教材を参照してください。今回の作成では新しい実験・学習評価は行っていません。