MySQL 8.0 リファレンスマニュアル MySQL NDB Cluster 8.0 を含む
このページは機械翻訳したものです。
LOAD INDEX INTO CACHEtbl_index_list[,tbl_index_list] ...tbl_index_list:tbl_name[PARTITION (partition_list)] [{INDEX|KEY} (index_name[,index_name] ...)] [IGNORE LEAVES]partition_list: {partition_name[,partition_name] ... | ALL }
LOAD INDEX INTO CACHE ステートメントは、明示的な CACHE INDEX ステートメントによって割り当てられたキーキャッシュ、またはそれ以外の場合はデフォルトのキーキャッシュにテーブルインデックスをプリロードします。
LOAD INDEX INTO CACHE は、パーティション化された MyISAM テーブルを含む MyISAM テーブルにのみ適用されます。 また、パーティションテーブルのインデックスは、1 つ、複数またはすべてのパーティションに対して事前ロードできます。
IGNORE LEAVES 修飾子によって、インデックスの非リーフノードのブロックのみがプリロードされます。
IGNORE LEAVES は、パーティション化された MyISAM テーブルに対してもサポートされます。
次のステートメントは、テーブル 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 の構文では、テーブルの特定のインデックスのみをプリロードするように指定できます。 ただし、実装ではすべてのテーブルインデックスがキャッシュに事前ロードされるため、テーブル名以外は指定する必要はありません。
パーティション化された MyISAM テーブルの特定のパーティションでインデックスを事前ロードできます。 たとえば、次の 2 つのステートメントでは、最初が、パーティション化されたテーブル pt のパーティション p0 のインデックスをプリロードするのに対して、2 番目は同じテーブルのパーティション p1 と p3 のインデックスをプリロードします。
LOAD INDEX INTO CACHE pt PARTITION (p0); LOAD INDEX INTO CACHE pt PARTITION (p1, p3);
テーブル pt のすべてのパーティションのインデックスを事前ロードするには、次のいずれかのステートメントを使用します:
LOAD INDEX INTO CACHE pt PARTITION (ALL); LOAD INDEX INTO CACHE pt;
ここで示した 2 つのステートメントは同等であり、どちらか一方を発行してもまったく同じ効果があります。 つまり、パーティションテーブルのすべてのパーティションのインデックスを事前ロードする場合、PARTITION (ALL) 句はオプションです。
複数のパーティションのインデックスを事前ロードする場合、パーティションは連続している必要はなく、パーティション名を特定の順序でリストする必要はありません。
LOAD INDEX INTO CACHE ... IGNORE LEAVES は、テーブル内のすべてのインデックスのブロックサイズが同じでないかぎり失敗します。 テーブルのインデックスブロックサイズを決定するには、myisamchk -dv を使用して Blocksize カラムを確認します。