MySQL 8.0 隱藏索引
阿新 • • 發佈:2019-01-08
隱式索引 最明顯的一個作用類似 索引回收站。例如資料庫長時間執行後,會積累很多索引,做資料庫優化時,想清理掉沒什麼用的多餘的索引,但可能刪除某個索引後,資料庫效能下降了,發現這個索引是有用的,就要重新建立。對於較大的表來說,刪除、重建索引的成本是很高的,如果在清理索引時能先放入回收站,確認沒影響後再徹底刪除,有影響的話就恢復回來,這樣就方便多了,把索引設定為 隱藏/顯示 就可以實現這個需求。索引的隱藏不影響索引維護,主鍵上不支援該特性
例如:
CREATE TABLE user
(user_id
int(11) NOT NULL DEFAULT '0',user_name
varchar(20) DEFAULT NULL,user_sex
user_old
smallint(6) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8
插入3716414 條資料,
在user_name上建立索引
CREATE INDEX name_index ON test.
user
(user_name);相比較而言快了好多倍
當我們不能決定是否要使用這個索引時可以把這個user_index 暫時禁掉
ALTER TABLE test.
user
ALTER INDEX name_index INVISIBLE;進行檢視
啟用時
ALTER TABLE test.
user
當不需要這個索引時,可以刪除
DROP INDEX name_index on test.
user
;