Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
PDF (US Ltr) - 27.1Mb
PDF (A4) - 27.1Mb
EPUB - 7.5Mb
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 を指定します。


User Comments
  Posted by James Day on July 26, 2004
Use mysqlcheck -Aa -uroot -p to run analyze table for all databases and tables (including InnoDB) on a running server. Available in MySQL 3.23.38 and later.
  Posted by Rob Blick on April 27, 2005
Note that ANALYZE TABLE requires SELECT and INSERT privileges, only (LOCK TABLES is not needed).
Sign Up Login You must be logged in to post a comment.