indexとは何か?indexという言葉が頭に入ってこない。index.htmlと混合する。などなど。
indexは「あかさたな」でいうア行、サ行など、検索のショートカットと感がれば分かり易い。
MySQLでどんなケースだとINDEXを設定するのか?
– レコード(n)が多く、検索(O(n))に時間がかかっている
– それによってアプリケーションのパフォーマンスに影響が出る
イメージしやすいと思うが、select文での検索(O(n))の時間は Olog(n)となり、レコードの処理に時間がかかる。indexをおくと、全件検索しなくて済むので、処理時間が短くなる。
indexの種類は幾つかあるが、mysqlではB-TreeIndexが使用されている。
(あ、この図、検索アルゴリズムの本などで見たことある!!クイックソートだ。)
ということで、関連する書籍を「情報検索アルゴリズム」などのワードでamazonで調べると良いだろう。
インデックスをはると、クイックソートの並び替えが短縮されるので、処理が短くなるという算段だ。
インデックスの追加は
ALTER TABLE table_name ADD INDEX index_name(column_name);