文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (美式信紙) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  ...  /  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 欄位。