1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

こんにちはSQL講習:robot:

オブジェクティブグループの@Yukidarusanです。
弊社では、毎月1回講習会を開催しています。
今回は改めて、インデックス とは?という点を確認していきたいと思います。

現場で本当に効く場面とは?

データベースを扱う現場では「SQLが遅い」という相談は日常茶飯事です。その多くはインデックスの有無が原因になっています。この記事では、ただの理論ではなく、実際の現場でどう効くのかに焦点を当ててお話しします。


インデックスとは?

インデックスは、本の索引のような仕組みです。
大量の行が格納されたテーブルから目的のデータを探すとき、フルスキャン(全部を1行ずつ読む)をせずに、インデックスを頼りに一瞬で目的のデータに辿り着けます。


実行計画とは?

SQLを実行するとき、データベースは「どうやってデータを取り出すか」を内部で決めています。
この処理手順を実行計画 (Execution Plan) と呼びます。

  • どのテーブルを先に読むのか
  • インデックスを使うのか、それともフルスキャンするのか
  • JOINの方法(Nested Loop, Hash Joinなど)は何か

こういった「SQLの裏側の動き」を可視化したものが実行計画です。

例:実行計画を確認する

EXPLAIN SELECT * FROM customers WHERE email = 'user@example.com';
  • インデックスなし

    Seq Scan on customers
      Filter: (email = 'user@example.com')
    

    → 全件走査(Seq Scan:シーケンシャルスキャン)

  • インデックスあり

    Index Scan using idx_customers_email on customers
      Index Cond: (email = 'user@example.com')
    

    → インデックススキャンに変わり、処理が効率化

👉 つまり、SQLの実行速度を改善するときは、まず実行計画を見て原因を探すのが第一歩になります。


現場での効果

1. 検索速度の劇的改善

100万件の注文履歴から「ユーザーID=12345」のデータを探す場合を考えます。

  • インデックスなし → 数秒以上
  • インデックスあり → 数ミリ秒

この差は、ユーザーの体感速度やAPIの応答時間に直結します。


2. JOINや絞り込みの効率化

業務システムではJOINが多用されます。
インデックスを使うことで結合処理や絞り込みが高速化されます。


どのくらいの規模からインデックスが必要になるのか?

「インデックスが必要なのは何件くらいからですか?」とよく質問を受けます。
結論から言うと、数万件を超えるあたりから差が顕著になり、数十万件〜数百万件規模では必須です。

目安の例

  • 〜1万件程度
    → フルスキャンでも一瞬。インデックスを貼っても体感差はほぼなし。
  • 数万件〜数十万件
    → 条件検索やJOINで「じわじわ遅い」と感じ始める。インデックスの有無で差が出てくる。
  • 数百万件以上
    → インデックスが無いと現実的なレスポンスが出せないレベル。業務システムでは必ずチューニング対象。

環境による違い

  • ローカルPC+SSD+少量データ
    → 差を感じにくい(学習環境でありがち)
  • クラウドDBやオンプレ大規模DB
    → ネットワーク遅延やI/O制約も加わり、インデックス効果が体感しやすい

👉 学習中は「実行計画でどう変わるか」を見て、現場では「数十万件以上ならインデックスを検討」と覚えておくと実践的です。


注意点

  • インデックスを増やしすぎると、INSERT/UPDATEが遅くなる
  • ストレージを消費する
  • よく使う検索条件やJOINキーにだけ適切に貼るのが基本

まとめ

  • インデックスは「索引」であり、検索やJOINを速くする
  • 実行計画は「DBがどう動いたか」を可視化するツール
  • 数万件を超える規模から効果が出やすい
  • 実務では数十万件〜数百万件で必須になる
  • 学習環境では差を感じにくいが、実行計画で確認できる

オブジェクティブグループでは X の投稿も平日毎日行っています!
IT 関連の小ネタや便利技から、日常のアニメ・ゲーム布教なども幅広く投稿してるので、
ご興味のある方は是非フォロー・いいねをお願いします。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?