文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  ...  /  LOAD INDEX INTO CACHE 陳述式

15.7.8.5 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 資料表。

以下陳述式會預先載入資料表 t1t2 的索引節點(索引區塊)

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 的索引,而第二個會預先載入相同資料表的分割區 p1p3 的索引

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 欄位。