-
ID:B3rTvT さんの質問

データベースのインデックスって読み込み速度だけに関して言えば、極論、全てのカラムにインデックスを貼った方が良いのでしょうか?インデックスについて勉強しているところなのですが、混乱中でございます。

みんなの回答 3 件

ID:a8ulY4 さんの回答

全てのカラムにインデックス貼ったら意味ないだろw
idと関連があるカラムに貼るんだろ。

ID:u8Px8s さんの回答

「読み込み速度だけに関して言えば、極論、全てのカラムにインデックスを貼った方が良い」というのは間違いではないです。
(あまりに大量のインデックスを作ると目的のインデックスを探すのに時間をとられる可能性がありますが)
ただ、検索時には必要なインデックスだけ使われますから、使われないインデックスを作るのは全く意味がないです。

また、読み込み速度以外に目を向ければ、インデックスが多いほど書き込み時に時間がかかりますから、最小限にしたほうがいいです。

それでも、インデックスなしで検索するよりはインデックスがあったほうがいいです。

ID:lScoqW

そうかなあ。フィールド数×レコード数にインデックスを貼るのなら、レコード数次第で膨大な物理容量を必要としてしまうから、レコード数によっては最終的にどんなクエリを実行しても究極的に遅いテーブルになっちゃうと思うけど。

ID:APyZct さんの回答

レコード特定→データ読み込み、の順で動いてて、データの読み込み速度じゃなくてレコードの特定を高速化するのがインデックスの仕事。

必要なレコード特定に必要な情報(検索に使われるキーワードとか、一意のIDを構成するもの)をまとめておいて、どれを読みに行くか決める段階はできるだけメモリ内で完結するようにするためのもの。

インデックスを使わないと、全レコード読み出して頭から付き合わせをはじめる。メモリにおさまらない大きさのテーブルだったら、全部検索し終わるまでストレージとメモリの出し入れ分の時間が余計にかかる。

読み込み速度あげるのは、テーブルをオンメモリに展開するストレージエンジンとかを使う。

って感じで理解してるけど、合ってる?

最終更新日:2016-02-02 (954 views)

関連するトピックス

ページ上部に戻る