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
資料表。
下列陳述式會預先載入資料表 t1
和 t2
的索引節點(索引區塊)
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
的索引,而第二個陳述式會預先載入相同資料表的分割區 p1
和 p3
的索引
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
欄位。