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'
廣告