ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLEtbl_name
[,tbl_name
] ...
ANALYZE TABLE
はテーブルのキーの分布を分析、格納します。分析の最中に、テーブルは
MyISAM
のリード
ロックを利用してロックされます。InnoDB
には、テーブルは書き込みロックでロックされます。このステートメントは
MyISAM
と InnoDB
テーブルと共に機能します。MyISAM
テーブルにとっては、このステートメントは
myisamchk --analyze
を利用する事と同じです。
解析が InnoDB
内でどのように機能するのかという事に関する情報については、項13.5.16. 「InnoDB
テーブル上の制約」
を参照してください。
MySQL は、定数以外の何かに対して接合を実行した時、どの順番でテーブルが接合されるべきかを決める為に格納されたキー分布を利用します。
このステートメントはテーブルに
SELECT
と INSERT
権限を要求します。
ANALYZE TABLE
は次のカラムを利用して結果セットを返します。
カラム | 値 |
Table |
テーブル名 |
Op |
いつも analyze
|
Msg_type |
status 、error 、info 、または
warning の1つ |
Msg_text |
メッセージ |
SHOW INDEX
ステートメントを利用して格納されたキー分布を確認する事ができます。詳しくは
項12.5.4.17. 「SHOW INDEX
構文」 を参照してください。
もしテーブルが前回の ANALYZE
TABLE
ステートメント以降変更されていなければ、そのテーブルは再解析されません。
ANALYZE TABLE
ステートメントは、任意の
NO_WRITE_TO_BINLOG
キーワード(またはそのエイリアス
LOCAL
)が利用されない限り、バイナリ
ログに書きこまれます。これは、複製マスタとして機能している
MySQL サーバ上で利用される ANALYZE
TABLE
ステートメントが、複製スレーブにデフォルトで複製される為に行われます。