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)
);

现在,让我们向 temp 表中插入一些记录:

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;

输出

以下是上述查询的输出:

操作 消息类型 消息文本
sample.temp 分配到键缓存 状态 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;

输出

查询执行后,将显示以下输出:

操作 消息类型 消息文本
demo.test1 分配到键缓存 状态 OK
demo.test2 分配到键缓存 状态 OK
demo.test3 分配到键缓存 状态 OK

如果指定的 keycache 不存在,则此语句会生成错误,如下所示:

CACHE INDEX temp IN demo;
ERROR 1284 (HY000): Unknown key cache 'demo'
广告

© . All rights reserved.