初心者のためのSQLチューニング
昨今は、システム構築にデータベースは欠かせない存在です。データベース RDBMSが使われない事案が無いほど普及しています。
そんな中、期待したパフォーマンスが出ない原因、ボトルネックに、データベースに問題があることが多いです。
なぜプログラマーはデータベースに歩み寄れないのか?
SQLはできるけど、、、データベースには疎い初心者プログラマー、開発に向けて、簡単なチェックリストを作ってみました。
SQL毎の実行時間を調べ、遅いSQLについては以下を確認します。
- テーブル結合している列に、索引はついているか? ついていない場合は索引を作成する。
- 条件(WHERE句)に使っている列に、索引はついているか? ついていない場合は索引を作成する。
- 並び替え(ORDER BY句)に使っている列に、索引はついているか? ついていない場合は索引を作成する。
- 条件(WHERE句)に使っている列に、関数や計算式を使っていないか? 使っている場合は使わない回避策を考える。
- ただし、テーブルに索引をつけすぎていないか? 多いとINSERT、UPDATEのパフォーマンスが悪化します。
- ただし、索引をつけるその列のカーディナリティは高いか? 例えば0と1しか入っていない列に索引をつけるのは無意味。
それでも効果が期待できない、効果が無いときは、仕様にまで踏み込みます。
- 索引がついている列を使って、新に条件がつけられないか? 例えば期間を絞れないか? 1年でいいんじゃね?
- 件数が絞れないか? MySQLならLIMITで。DB2ならFETCH FIRST 10 ROWS ONLY。
ぜひ、試してみてください。
そうだ、一つ忘れていたので追記。
- Prepared Statementを使おう。データベースはコンパイルしたSQLをキャッシュしてくれます。Prepared Statementを使うと、私の知っているDBMSはキャッシュのヒット率があがります。コンパイル時間が減らせます。さらにSQLインジェクション対策にもなります。
ここで挙げたものは非常に初歩的なものです。
もっと、より詳細にチューニングしたいときは、ミックさんのホームページを読んでてみてください。
SQLを速くするぞ
http://www.geocities.jp/mickindex/database/db_optimize.html
勉強するなら、ミックさんの書籍「達人に学ぶ-SQL徹底指南書」がオススメです。
Drupal theme by Kiwi Themes.


コメント(0)
新しいコメントの投稿