Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

インデックスとデータのスキャン

More than 1 year has passed since last update.

インデックスとデータのスキャン

インデックスとは

インデックスとはテーブルの情報を探す時に検索の対象としてよく使用するカラムの値だけを取り出して検索しやすいようにしておいたものです。

インデックスの仕組

検索に必要なキー項目とデータ行が格納されているROWIDだけど保管するため、大量のデータ群から簡単に対象のデータを検索できます。

そもそも検索の方法は?

いろいろありますが、ここでは2つのパターンを紹介します。

フルテーブルスキャン

 フルテーブルスキャンは、SQLで指定されたテーブルを頭から1行1行読み込んで検索条件を満たす行を検索する方法です。

数十件程度のテーブルであれば、フルテーブルスキャンの方が早いです。

インデックススキャン

インデックススキャンは、インデックスを使って、条件に該当するデータの場所を特定してから、表にアクセスする方法です。

インデックスには検索条件(where条件の項目)のキー項目とROWIDを保管しているため条件に該当するデータの場所(≒ROWID)を高速につきとめます。

使い方によって2時間かかってたSQLが2分で終わるとかざらにあります。

インデックスのデメリット

  • SQLの検索条件となっているキー項目で張らないと意味がありません
  • 検索は早くなってもUpdate/Delete/Insertが遅くなる可能性があります
  • インデックスのメンテナンスは必ず夜間バッチ完了後に実施しましょう

インデックスはちゃんと考えて作りましょう。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away