›HEREインデックスの意味とメリット・デメリット広告テーブルに多くのカラムが含まれていたり大量のデータが格納されている場合、テーブルから特定のデータを検索しようとすると非常に時間がかかる場合があります。このような場合に適切なカラムにインデックスを作成しておくことで検索が高速になる場合があります。具体的な作成方法は次のページ以降に解説しますので、ここではまずインデックスがどういったものであるのか解説いたします。1.インデックスとは2.インデックスのメリットデメリットインデックスとは例として次のようなテーブルで考えてみます。このテーブルには「id」「country」「name」という3つのカラムが含まれています。Yahooこのテーブルで例えば「name」カラムの「Sony」というデータを検索したとします。テーブルに格納されているデータは特に順番に並んでいるわけではありませんので目的のデータがあるかどうか順に検索していくことになります。データがこの程度の量であればそれでも問題はありませんが、数百万ものデータが格納されている場合に頭から順に調べていくのは非常に効率が悪いです。このような場合にインデックスを作成すると検索が高速になる場合があります。インデックスを簡単に言うと対象のカラムのデータを取り出し、高速に検索できるように手を加えて保存しておいたものです。データを検索する時にテーブルではなくインデックスの方を検索しますので非常に高速に検索ができる場合があります。やって高速に検索できるようにしているのかについてですが、Wikipediaのインデックスのページを見てもB-Tree方式や関数方式など色々方法があるようです。SQLiteではどのような方式を採用しているのかは分かりませんでした。ここでは簡単な例としてデータを並べ替えて保存した場合で考えてみます。「name」カラムを対象にインデックスを作成した時、次のように「name」カラムのデータを昇順に並べ替えて保存しておいたとします。name-----------FordGMGoogleGoogleHondaMatsushitaMicrosoftSharpSonyToyotaYahooYahoo先ほどと同じように「Sony」というデータを探す場合、インデックスに「S」で始まるデータはxxxから置いてあるという情報も合わせて保存されていれば頭から順に検索する場合よりも早く検索することができます。実際にこんな方法が使われているわけではありませんが、インデックスを作成することでテーブルとは別に検索用に最適化された状態でデータが保存されるということを覚えておいて下さい。インデックスのメリットデメリットインデックスを作成しておくと便利ではありますがメリットだけではありません。テーブルとは別にデータを独自に保持しますので、テーブルにデータを追加するとインデックスの方にもデータが追加されます。多くのインデックスを作成した場合、データを追加するたびにテーブルに加えて全てのインデックスにデータが追加されるためデータ追加時の処理が遅くなります。格納されているデータが少ないテーブルでインデックスを作成したり、格納されるデータの種類が少ないカラムでインデックスを作成しても効果はそれほど期待できません。データの検索がそもそもあまり行われないカラムでインデックスを作成しても仕方がありません。インデックは便利ですがデータ追加時の処理が重くなるというデメリットもありますので、インデックスが必要かどうかについてよく検討された上で作成されるようにして下さい。IKURA初心者~中級者の方を対象としたプログラミング方法や開発環境の構築の解説を行うサイトの運営を多数行っています。