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;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章