LOAD INDEX INTO CACHE语句
LOAD INDEX INTO CACHE tbl_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
表。此外,分区表上的索引可以预载一个,几个或所有分区。
所述IGNORE LEAVES
改性剂导致要预装只为索引的非叶结点的块。
IGNORE LEAVES
分区MyISAM
表也受支持。
以下语句为表t1
和的索引预加载节点(索引块)t2
:
mysql>LOAD INDEX INTO CACHE t1, t2IGNORE 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条语句中,第一个语句预加载p0
分区表分区的索引,第二个语句预加载分区表和同一表pt
的索引:p1
p3
LOAD INDEX INTO CACHE ptPARTITION (p0);LOAD INDEX INTO CACHE ptPARTITION (p1, p3);
要预加载table中所有分区的索引pt
,可以使用以下两个语句之一:
LOAD INDEX INTO CACHE ptPARTITION (ALL );LOAD INDEX INTO CACHE pt;
刚刚显示的两个语句是等效的,发出其中一个具有完全相同的效果。换句话说,如果您希望为分区表的所有分区预加载索引,则该PARTITION(ALL)
子句是可选的。
当预加载多个分区的索引时,这些分区不必是连续的,并且您无需以任何特定顺序列出其名称。
LOAD INDEX INTO CACHE ... IGNORE LEAVES
失败,除非表中的所有索引具有相同的块大小。要确定表的索引块大小,请使用myisamchk -dv并检查Blocksize
列。