これまで結構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
あわせて読みたい
非デザイナーに必須の組み合わせ Bootstrap + Font Awesome を使ってみた - TechNoteエンジニアにとって、webサービスや社内webシステムを作るときに毎回苦労するのが「デザイン」ですが、最近はBootstrapやBootMetro、Pureなど...
LOAD DATA INFILE使用時の文字化け - TechNote環境が変わったので移行時にこの方法で環境作成&データインポートをしたところ文字化けに遭遇。「LOAD DATA」の直前にSET NAMES UTF8;などと記述...
phpmyadminでLOAD DATA INFILE(カラム指定)の例 - TechNotemysqlモニタからのLOAD DATAのコマンドは下記。mysql> load data infile "c:\sample\KEN_ALL.csv" int...
MySQL CSVローダーの作成方法 - TechNoteシステム構築時に、開発環境DBデータ(CREATE TABLEやCSVデータ)を本番環境に移す時、手動で実行するのではなく全て自動化すべきである。ローダを使って...
基礎からのMySQL 改訂版 (プログラマの種シリーズ SE必修! )
- 作者: 西沢夢路
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2012/05/01
- メディア: 大型本
- 購入: 2人 クリック: 10回
- この商品を含むブログ (9件) を見る
- 作者: Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling,伊藤直也(監訳),田中慎司(監訳),吉川英興(監訳),株式会社クイープ
- 出版社/メーカー: オライリージャパン
- 発売日: 2009/12/14
- メディア: 大型本
- 購入: 17人 クリック: 373回
- この商品を含むブログ (46件) を見る