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


13.7.2.1 ANALYZE TABLE 構文

ANALYZE [NO_WRITE_TO_BINLOG | LOCAL] TABLE
    tbl_name [, tbl_name] ...

ANALYZE TABLE は、テーブルのキー分布を分析して格納します。分析中、そのテーブルは InnoDB および MyISAM に対する読み取りロックでロックされます。このステートメントは、InnoDBNDB、および MyISAM テーブルで機能します。MyISAM テーブルの場合、このステートメントは myisamchk --analyze を使用することと同等です。

InnoDB 内で分析がどのように機能するかの詳細は、セクション14.13.16.1「永続的オプティマイザ統計のパラメータの構成」およびセクション14.13.17「InnoDB テーブルに対する ANALYZE TABLE の複雑さの推定」を参照してください。セクション14.6.7「InnoDB テーブル上の制限」も参照してください。特に、innodb_stats_persistent オプションを有効にした場合は、InnoDB テーブルに大量のデータをロードするか、またはそのテーブルの新しいインデックスを作成したあとに ANALYZE TABLE を実行する必要があります。

MySQL は、格納されたキー分布を使用して、定数以外の何かに対して結合が実行されたときにテーブルを結合する順序を決定します。さらに、クエリー内の特定のテーブルにどのインデックスを使用するかを決定する場合は、キー分布を使用できます。

このステートメントには、このテーブルに対する SELECT および INSERT 権限が必要です。

ANALYZE TABLE はパーティション化されたテーブルに対してサポートされているため、ALTER TABLE ... ANALYZE PARTITION を使用して 1 つ以上のパーティションを分析できます。詳細は、セクション13.1.7「ALTER TABLE 構文」およびセクション19.3.4「パーティションの保守」を参照してください。

MySQL 5.6.11 でのみ、このステートメントを発行する前に、gtid_nextAUTOMATIC に設定する必要があります。(Bug #16062608、Bug #16715809、Bug #69045)

ANALYZE TABLE は、次のカラムを含む結果セットを返します。

カラム
Table テーブル名
Op 常に analyze
Msg_type statuserrorinfonote、または warning
Msg_text 情報メッセージ

SHOW INDEX ステートメントを使用して、格納されたキー分布を確認できます。セクション13.7.5.23「SHOW INDEX 構文」を参照してください。

テーブルが最後の ANALYZE TABLE ステートメントのあとに変更されていない場合、そのテーブルが再度分析されることはありません。

デフォルトでは、サーバーは ANALYZE TABLE ステートメントをバイナリログに書き込み、それらがレプリケーションスレーブにレプリケートされるようにします。ロギングを抑制するには、オプションの NO_WRITE_TO_BINLOG キーワード、またはそのエイリアス LOCAL を指定します。