1. 程式人生 > >MySQL 8.0 隱藏索引

MySQL 8.0 隱藏索引

隱式索引 最明顯的一個作用類似 索引回收站。例如資料庫長時間執行後,會積累很多索引,做資料庫優化時,想清理掉沒什麼用的多餘的索引,但可能刪除某個索引後,資料庫效能下降了,發現這個索引是有用的,就要重新建立。對於較大的表來說,刪除、重建索引的成本是很高的,如果在清理索引時能先放入回收站,確認沒影響後再徹底刪除,有影響的話就恢復回來,這樣就方便多了,把索引設定為 隱藏/顯示 就可以實現這個需求。索引的隱藏不影響索引維護,主鍵上不支援該特性
例如:
CREATE TABLE user (
user_id int(11) NOT NULL DEFAULT '0',
user_name varchar(20) DEFAULT NULL,
user_sex

varchar(2) DEFAULT NULL,
user_old smallint(6) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入3716414 條資料,
MySQL 8.0 隱藏索引
在user_name上建立索引
CREATE INDEX name_index ON test.user (user_name);
MySQL 8.0 隱藏索引
相比較而言快了好多倍
當我們不能決定是否要使用這個索引時可以把這個user_index 暫時禁掉
ALTER TABLE test.user ALTER INDEX name_index INVISIBLE;
進行檢視
MySQL 8.0 隱藏索引
啟用時
ALTER TABLE test.user
ALTER INDEX name_index VISIBLE;
MySQL 8.0 隱藏索引
當不需要這個索引時,可以刪除
DROP INDEX name_index on test.user;