LOAD INDEX INTO CACHEtbl_index_list
[,tbl_index_list
] ...tbl_index_list
:tbl_name
[[INDEX|KEY] (index_name
[,index_name
] ...)] [IGNORE LEAVES]
LOAD INDEX INTO CACHE
ステートメントは、明示的な CACHE
INDEX
ステートメントによって割り当てられたキー
キャッシュに、またはそうでなければデフォルトのキー
キャッシュに、テーブル
インデックスをあらかじめロードしておきます。LOAD
INDEX INTO CACHE
は MyISAM
テーブルにだけ利用されます。
IGNORE LEAVES
修飾子は、インデックスの非リーフ
ノードの為のブロックだけがあらかじめロードされるよう働きかけます。
次のステートメントは、(index blocks) テーブル
t1
と t2
のインデックスのノード(インデックスブロック)をあらかじめロードしておきます。
mysql> LOAD INDEX INTO CACHE t1, t2 IGNORE LEAVES;
+---------+--------------+----------+----------+
| Table | Op | Msg_type | Msg_text |
+---------+--------------+----------+----------+
| test.t1 | preload_keys | status | OK |
| test.t2 | preload_keys | status | OK |
+---------+--------------+----------+----------+
このステートメントは t1
から全てのインデックス
ブロックをあらかじめロードしておきます。それは、t2
から非リーフ
ノードのブロックだけをあらかじめロードします。
LOAD INDEX INTO CACHE
の構文によって、テーブルからの特定のインデックスだけがあらかじめロードされなければいけない、と指定する事ができます。現在のインプリメンテーションは、全てのテーブルのインデックスをキャッシュ内に割り当てるので、テーブル名以外を指定する利用は無いのです。
LOAD INDEX INTO CACHE
は、テーブル内の全てのインデックスが同じブロック
サイズでなければ失敗します。myisamchk
-dv を利用し、Blocksize
カラムを確認する事で、テーブルのインデックス
ブロック サイズを決定する事ができます。