MySQL - CACHE INDEX 语句
MySQL CACHE INDEX 语句
MySQL CACHE INDEX 语句用于将表的索引分配给键缓存。此语句仅适用于 MyISAM 表。您可以使用 SET GLOBAL 语句创建键缓存。
语法
以下是 MySQL CACHE INDEX 语句的语法 -
CACHE INDEX { tbl_name [{INDEX|KEY} (index_name[, index_name] ...)] }
示例
假设我们使用 CREATE 语句创建了新的数据库和一个名为 temp 的表,如下所示 -
CREATE TABLE temp ( ID INT, Name VARCHAR(100), Age INT, City VARCHAR(100) );
现在,让我们在临时表中插入一些记录 -
INSERT INTO temp values (1, 'Radha', 29, 'Vishakhapatnam'), (2, 'Dev', 30, 'Hyderabad');
假设我们已经在上面创建的表上创建了索引 -
CREATE INDEX sample_index ON temp (name) USING BTREE; CREATE INDEX Composite_index on temp (ID, Name);
现在,使用 SET GLOBAL 语句创建一个新的键缓存,如下所示 -
SET GLOBAL TestCache.key_buffer_size=128*1024;
以下查询将表 temp 的索引分配给键缓存 TestCache -
CACHE INDEX temp IN TestCache;
输出
以下是上述查询的输出 -
Table | Op | Msg_type | Msg_text |
---|---|---|---|
sample.temp | assign_to_keycache | status | OK |
多个表
您还可以在单个查询中将多个表的索引分配给键缓存。
示例
假设我们创建了三个新表,如下所示 -
CREATE TABLE Test1(ID INT, Name VARCHAR(255)) ENGINE = MyISAM; CREATE TABLE Test2(ID INT, Name VARCHAR(255)) ENGINE = MyISAM; CREATE TABLE Test3(ID INT, Name VARCHAR(255)) ENGINE = MyISAM;
现在让我们在这些表上创建索引。
CREATE INDEX testIndex1 ON Test1 (ID); CREATE INDEX testIndex1 ON Test2 (ID); CREATE INDEX testIndex3 ON Test3 (ID);
以下查询将上述所有表的索引添加到索引缓存中 -
CACHE INDEX Test1, Test2, Test3 IN TestCache;
输出
查询执行后将显示以下输出 -
Table | Op | Msg_type | Msg_text |
---|---|---|---|
demo.test1 | assign_to_keycache | status | OK |
demo.test2 | assign_to_keycache | status | OK |
demo.test3 | assign_to_keycache | status | OK |
如果指定的密钥缓存不存在,此语句将生成错误 -
CACHE INDEX temp IN demo; ERROR 1284 (HY000): Unknown key cache 'demo'