質問: なんとなくは分かっているのですが、その仕組みが、まだしっくりといってません。 例えば、「zoo」という英単語を辞書で調べる時に、Aから順に総当りでページをめくっていては日が暮れます。その場合、Zに目印をつけておけば、すぐに見つけることができますよね。 インデックスとは、これと似たような仕組みなのでしょうか? もしそうであれば、単語内に、「oo」がある文字を探すにはどうすればよいのでしょうか?総当りで調べていく以外の方法が分かりません。 また、もしインデックスを張ることによって、SELECTの速度が上がるのであれば、なぜ全カラムにインデックスを張らないのでしょうか? インデックスを張るデメリットは何でしょうか?また、インデックスを張るか張らないかの基準は何でしょうか?
回答: >インデックスとは、これと似たような仕組みなのでしょうか? 辞書でいえば「見出し」そのものですね。少なくとも見出しが順番に並んでいるという前提があれば、Zに目印があろうがなかろうが索引は便利です。順番に並んでいなければ確実に全件を調べないといけませんよね?昇順に並んでいればたとえば二分検索などですばやくたどり着けます。 >もしインデックスを張ることによって、SELECTの速度が上がるのであれば、 >なぜ全カラムにインデックスを張らないのでしょうか? データの挿入や削除の時に、indexも同時に挿入・削除する必要があります。indexが多くなればそれだけDBサーバの仕事が増えます。なので、あとで検索や連結に使う項目に絞ってindexにします。