Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.2Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  InnoDB クエリーの最適化

8.5.5 InnoDB クエリーの最適化

InnoDB テーブルのクエリーをチューニングするには、各テーブルに適切なインデックスのセットを作成します。詳細は、セクション8.3.1「MySQL のインデックスの使用の仕組み」を参照してください。InnoDB インデックスに関する次のガイドラインに従います。

  • InnoDB テーブルには主キー がある (それをリクエストするかしないかに関係なく) ため、もっとも重要で緊急を要するクエリーで使用されるカラムとして、テーブルごとに主キーカラムのセットを指定します。

  • 主キーのカラム値は各セカンダリインデックスに複製されるため、あまり多く、長すぎるカラムを指定しないでください。インデックスに不要なデータが含まれていると、このデータを読み取る I/O とそれをキャッシュするメモリーによって、サーバーのパフォーマンスとスケーラビリティーが低下します。

  • 各クエリーで使用できるインデックスは 1 つだけであるため、カラムごとに個別のセカンダリインデックスを作成しないでください。ほんの少数の異なる値を持ち、めったにテストされないカラムへのインデックスは、どのクエリーにも役立たない可能性があります。同じテーブルに対して多くのクエリーがあり、カラムのさまざまな組み合わせをテストする場合、多数の単一カラムインデックスよりも、少数の連結されたインデックスを作成してみてください。インデックスに結果セットに必要なすべてのカラムが含まれている (カバリングインデックスと呼ばれます) 場合、クエリーはテーブルデータをまったく読み取らなくても済む可能性があります。

  • インデックス設定されたカラムに NULL 値が含まれることがない場合は、テーブルの作成時に、それを NOT NULL として宣言します。オプティマイザは、各カラムに NULL 値が含まれているかどうかを知っていれば、クエリーに使用するためにもっとも効率的なインデックスをより適切に判断できます。

  • MySQL 5.6.4 以上では、セクション14.13.14「InnoDB の読み取り専用トランザクションの最適化」の技法を使用して、InnoDB テーブルの単一クエリートランザクションを最適化できます。

  • 頻繁に更新されないテーブルに対して、たびたび繰り返しのクエリーを行う場合、クエリーキャッシュを有効にします。

    [mysqld]
    query_cache_type = 1
    query_cache_size = 10M

User Comments
Sign Up Login You must be logged in to post a comment.