基礎前提知識

なぜインデックスが必要か(フルスキャンの限界)

定義

フルテーブルスキャンとは、インデックスを使わずにテーブルの先頭から末尾まで順に1行ずつ読んで条件に合う行を探す方法である。件数に比例して遅くなる。

そもそも「探す」というのはコンピュータにとって重い処理

テーブルに1万件、100万件、1億件のデータがあるとき、条件に合う行を見つけるのに何が起きるのかを考えたことはありますか? インデックスを貼っていない場合、DBは先頭から1行ずつ順に全部読むという素朴な方法を取ります。 これがフルテーブルスキャン(あるいはシーケンシャルスキャン)です。

フルテーブルスキャンの動き
読んだ行数 0 / 15
id
name
email
  • 42
    Sato
    sato@example.com
  • 15
    Tanaka
    tanaka@example.com
  • 83
    Suzuki
    suzuki@example.com
  • 27
    Ito
    ito@example.com
  • 61
    Nakamura
    nakamura@example.com
  • 4
    Yamada
    yamada@example.com
  • 99
    Kobayashi
    kobayashi@example.com
  • 33
    Watanabe
    watanabe@example.com
  • 71
    Takahashi
    takahashi@example.com
  • 8
    Saito
    saito@example.com
  • 55
    Kato
    kato@example.com
  • 19
    Yoshida
    yoshida@example.com
  • 88
    Yamamoto
    yamamoto@example.com
  • 66
    Kimura
    kimura@example.com
  • 12
    Hayashi
    hayashi@example.com
SQL
SELECT *
FROM users
WHERE id = 55;
状況

「スキャン開始」を押すと、先頭から順に走査していく様子が見える。 検索対象が末尾の 8899 のときと、先頭付近の 4 のときで比べてみるとよい。

テーブルは id でソートされていない前提。目的の行が末尾に近いほど、フルスキャンは遅くなる。

件数が増えると線形に遅くなる

フルスキャンの計算量はO(N)(データ件数に比例)です。100万件で我慢できても、1億件になると単純計算で100倍遅くなります。 インデックスはこの問題を「対数時間」O(log N) に近い形に置き換える仕組みです。

次に読むとよいトピック

よくある疑問

Q.フルスキャンとインデックスは何が違いますか?
A.フルスキャンはテーブルの先頭から最後まで全行を順に読む方式で、件数に比例して遅くなります。インデックスはあらかじめキー順に並んだ小さな構造で、目的の位置を対数時間で特定できます。
Q.インデックスを貼れば必ず速くなりますか?
A.いいえ。テーブルの多くの行に該当するようなクエリではインデックスを使ってもテーブルアクセスの繰り返しが発生し、フルスキャンの方が速い場合があります。オプティマイザは統計情報を見てどちらが有利かを判断します。

関連トピック

もっと学びたい方へ(おすすめ書籍)

おすすめ
達人に学ぶDB設計徹底指南書 第2版
ミック

テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。

Amazon で見る →
[改訂3版]内部構造から学ぶPostgreSQL
勝俣智成 ほか

PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。

Amazon で見る →
SQL実践入門 ── 高速でわかりやすいクエリの書き方
ミック

「なぜこの書き方が速いのか」を実行計画から説明する一冊。条件分岐・集約・結合・更新のそれぞれで、良い書き方と悪い書き方を対比しながら読める。

Amazon で見る →
おすすめ
楽々ERDレッスン (CodeZine BOOKS)
羽生章洋

ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。

Amazon で見る →
おすすめ
スッキリわかるSQL入門 第4版 ドリル256問付き!
中山清喬/飯田理恵子

ドリル 256 問を実際に打ちながら進める SQL の入門書。付属のブラウザ環境で演習できるので、SELECT から結合・集約までを環境構築で止まらずに通せる。

Amazon で見る →
達人に学ぶSQL徹底指南書 第2版
ミック

SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。

Amazon で見る →
SQLアンチパターン 第2版
Bill Karwin

実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。

Amazon で見る →
情報処理教科書 データベーススペシャリスト 2025年版
三好康之

IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。

Amazon で見る →
理論から学ぶデータベース実践入門
奥野幹也

リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。

Amazon で見る →

本セクションはAmazonアソシエイトのリンクを含みます。

オンライン個別指導

もっと深くDBを学びたい方へ。

たいてっくが、SQL・データベース設計・パフォーマンスチューニング・IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。

無料相談を予約する →
受講者の声 (DB・SQL コース)
menta レビュー原文を見る →
  • 教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。
    H 様DB・SQL コース受講
  • 体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。
    M 様DB・SQL コース受講
  • 大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。
    K 様DB・SQL コース受講