暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

MySQL的SQL语句 - 数据库管理语句 - 其他管理语句 - LOAD INDEX INTO CACHE 语句

林员外聊编程 2021-04-27
286
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 修饰符会导致仅预加载索引的非叶节点的块。
 
分区 MyISAM 表也支持 IGNORE LEAVES
 
下面的语句预加载表 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 的索引,而第二条语句预加载同一表的分区 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;
 
刚才显示的两个语句是等价的,执行其中任何一个都具有完全相同的效果。换句话说,如果希望为分区表的所有分区预加载索引,PARTITION (ALL) 子句是可选的。
 
为多个分区预加载索引时,分区不必是连续的,也不必按任何特定顺序列出它们的名称。
 
除非表中的所有索引具有相同的块大小,否则 LOAD INDEX INTO CACHE ... IGNORE LEAVES 将失败。要确定表的索引块大小,请使用 myisamchk -dv 命令并检查 Blocksize 列。
 
 
 
官方文档:
https://dev.mysql.com/doc/refman/8.0/en/load-index.html

文章转载自林员外聊编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论