アプリ版:「スタンプのみでお礼する」機能のリリースについて

データベースにインデックスについて色々、調べてみましたが、難しく書かれていることが多くわかりませんでした。

カラムにインデックスを指定するとデータベースのテーブル内でその指定されたカラムは検索しやすく並び替わるということでしょうか?

その分、削除や更新、追加などは 並び替えなどがたくさん行われてしまうので、そのような処理が頻繁にあるようならインデックスは使用しないほうが良いということでしょうか?

A 回答 (3件)

大体そんな感じで問題ないです。



・更新、追加時はインデックス処理で負荷がかかります
・検索、集計時はインデックスのありなしで数百倍(もっと)処理速度が違います
    • good
    • 0

『インデックス』とは、


日本語で『索引』です。

『索引』の役割のイメージわきますか?

取扱説明書とか、辞典といったもので、
用語がABCや、あいうえお順に並んでいて、
その用語の説明から書かれているページが
示されているのが、『索引』です。

データベースのインデックスは、
これと同じ機能を有しているのです。

例えば、下記のようなデータベースがあった場合

No 苗字   氏名    薬物
01 アシカ  ASIKA 覚せい剤
02 キモハラ 肝原 和博 覚せい剤
03 サクジリ 削尻エロカ MDMA
04 タチ   ピカール館 コカイン

インデックスを『薬物』で作成すると
覚せい剤 01、02
コカイン 04
MDMA  03
という、インデックスができます。

覚せい剤をキーワードで指定すると、
01と02の番号がついたデータを
ひっぱってくるわけです。
01 アシカ  ASIKA 覚せい剤
02 キモハラ 肝原 和博 覚せい剤
というわけです。

これに例えば、
?? カサイ  笠井ノリコ 覚せい剤
といったデータを追加すると、

01 アシカ  ASIKA 覚せい剤
02 カサイ  笠井 法子 覚せい剤
03 キモハラ 肝原 和博 覚せい剤
04 サクジリ 削尻エロカ MDMA
05 タチ   ピカール館 コカイン

といった感じに、Noの付け替えをして、
インデックスでは、
覚せい剤 01,02,03
というデータに書き換える
といった動作となるわけです。

たった4つ5つのレコードだとあんまり
有難みを感じませんが、
これが、数千数万件のデータがあると、
どこどこ(何番目と何番目にある)って分かると
読み込んだ時には速く拾ってこられるわけです。

インデックスがないとどうなるかというと、
1件ずつデータを読んでは、
これは違う、これが違う、これは合ってる
というのを全データを見ていかなければ
いけないわけです。

以前はこれを1件ずつ読んで、
データを拾うのは、件数が多いと
処理時間がかかってしまいましたが、
ITは急速な進歩を遂げました。

どんどん高速化、大容量が進み、
全データを読み込んでも大した
時間がかからなくなってきて、
このあたりのスキルやノウハウ
インデックスを付ける付けない
といったあたりがみえる技術者
データベース設計者や手法にも
影響を与えていると思います。

とりあえず、いかがでしょうか?
    • good
    • 0

>その指定されたカラムは検索しやすく並び替わるということでしょうか?



並び替わるのではなく、並び替えたインデックスが別に追加されるということです。
インデックスは、元のテーブルの行にピンポイントでアクセスできる値も持っています(この例だと行の項目)。
データ量も増えますし、追加と更新の負荷も少し上がります。

■テーブル
行、セイ、メイ
1、ヤマダ、タロウ
2、タナカ、ジロウ
3、カトウ、ユウコ
4、スズキ、ハナコ
5、サトウ、ヨウコ

■セイに索引を追加
セイ、行
カトウ、3
サトウ、5
スズキ、4
タナカ、2
ヤマダ、1
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!