MySQLでインデックスを作成する方法

これまで結構DB使ってデータ検索とかいろいろしてきたけど、「パフォーマンスチューニング」とかいう言葉を見ても「?」という感じのまま使ってきた。なのでテーブル生成するときのcreate文を作るときも「not Null」や「Primary Key」くらいしか使用したことなかった。

でも頭の片隅ではずっと「あの一覧画面の表示の遅さはもしかしてパフォーマンスチューニングとやらで解決できるのでは」という考えが点滅していた。

そして今回、どうしても表示の遅さを改善したい場面に立ち会ったため、その辺りのことを調べてみた。

パフォーマンスチューニングとはなにか?

要は検索の効率化ということみたいだけど、検索を効率化するには、本に索引を作るように「インデックス」を付けるとよいらしい。

インデックスの付け方は

ALTER TABLE t_test ADD INDEX (id)

のようにする。

select文が投げられたとき、インデックスがない場合、DBはテーブル内の全行を調べることになるため効率が悪いらしい。

なのでインデックスを張ると検索などの性能は向上する。

ただしその一方で、データ更新のたびにインデックスを張り直すことになるので更新処理で少し速度低下を招く。またインデックスを付けるための使用容量を食う。
というデメリットもあるらしい。

実際インデックスを作成してみると、ちょっと表示に時間がかかっていた一覧画面がパッと表示されるようになって、一瞬目を疑ってしまった。これはもう少し詳しく勉強したほうがよさそうな感じ。

EXPLAINを使用すると、インデックスが適切に使用されているか確認できるらしい。そこはまた次回調べてみる。
http://dev.mysql.com/doc/refman/4.1/ja/explain.html

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )

実践ハイパフォーマンスMySQL 第2版

実践ハイパフォーマンスMySQL 第2版

  • 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ
  • 出版社/メーカー: オライリージャパン
  • 発売日: 2009/12/14
  • メディア: 大型本
  • 購入: 17人 クリック: 373回
  • この商品を含むブログ (46件) を見る
タイトルとURLをコピーしました