8.0新特性-不可見索引
官方文件: https://dev.mysql.com/doc/refman/8.0/en/invisible-indexes.html
MySQL支援不可見索引,即優化器不會使用該索引。 不可見索引特性不可以用於主鍵。
預設索引是可見的。可以在create table、create index、alter table操作中使用關鍵字visible、invisible來指定索引是否可見。
create table t1 ( i int, j int, k int, index i_idx (i) invisible ) engine = innodb; create index j_idx on t1 (j) invisible; alter table t1 add index k_idx (k) invisible;
修改已經存在的索引的可見性:
alter table t1 alter index i_idx invisible; alter table t1 alter index i_idx visible;
可以通過information_schema.statistics、show index檢視索引的可見性:
>select index_name, is_visible -> from information_schema.statistics -> where table_schema = 'abce' and table_name = 't1'; +------------+------------+ | INDEX_NAME | IS_VISIBLE | +------------+------------+ | i_idx | NO | +------------+------------+ 1 row in set (0.00 sec) >show index from t1; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ | t1 | 1 | i_idx | 1 | i | A | 0 | NULL | NULL | YES | BTREE | | | NO | NULL | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+ 1 row in set (0.00 sec)
不可見索引可以用來測試移除索引後對查詢效能的影響。 畢竟對於大表,刪除和重建索引是非常昂貴的操作。 系統變數optimizer_switch中的use_invisible_indexes標誌控制了優化器是否使用不可見索引來構建執行計劃。
mysql>show variables like '%optimizer_switch%' index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=on,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=on,derived_merge=on,use_invisible_indexes=off,skip_scan=on | 返回行數:[1],耗時:14 ms.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29990276/viewspace-2685359/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- mysql8.0新特性--隱藏索引MySql索引
- MySQL 8.0新特性-倒敘索引 desc indexMySql索引Index
- MySQL 8.0 新特性MySql
- Oracle12C新特性_不可見欄位(二)Oracle
- MySQL8.0-新特性-DescendingIndexMySqlIndex
- MySQL8.0-新特性彙總MySql
- MySQL 8.0 新特性梳理彙總MySql
- Mysql8.0部分新特性MySql
- MySQL8.0 新特性 top10MySql
- MySQL8.0 新特性:Partial Update of LOB ColumnMySql
- MySQL8.0新特性-CTE語法支援MySql
- Oracle資料庫中的不可見索引 invisible indexOracle資料庫索引Index
- MySQL8.0新特性-臨時表的改善MySql
- MySQL 8.0 18個管理相關的新特性MySql
- MySQL 8.0表空間新特性簡單實驗MySql
- 新特性解讀 | MySQL 8.0 對 UNION 的改進MySql
- 新特性解讀 | MySQL 8.0 多因素身份認證MySql
- 新特性解讀 | MySQL 8.0 新密碼策略(終篇)MySql密碼
- 8.0新特性-並行查詢innodb_parallel_read_threads並行Parallelthread
- MySQL 5.6, 5.7, 8.0版本的新特性彙總大全MySql
- MySQL 8.0新特性-並行查詢innodb_parallel_read_threadsMySql並行Parallelthread
- MySQL 8.0 新增特性介紹MySql
- MySQL 8.0 20個 InnoDB 及資料字典相關的新特性MySql
- 新特性解讀 | MySQL 8.0錯誤日誌深入過濾(上)MySql
- MySQL 8.0 在關聯式資料庫方面有這些新特性MySql資料庫
- 深圳Java培訓學習:Java8.0新特性之Lambda表示式Java
- MYSQL8.0特性—無select注入MySql
- MySQL8.0.27 新特性-提高二級索引的建立效率MySql索引
- 好程式設計師大資料培訓分享MySQL8.0新特性程式設計師大資料MySql
- MySQL 8.0 中的索引可以隱藏了!MySql索引
- 理解Mysql索引原理及特性MySql索引
- 好程式設計師Java教程分享Java8.0新特性之Lambda表示式程式設計師Java
- css元素不可見方法CSS
- 新特性
- 常見面試題:java8有什麼新特性?面試題Java
- MySQL常見索引概念MySql索引
- MySQL 8.0特性-自增變數的持久化MySql變數持久化
- 牛逼!MySQL 8.0 中的索引可以隱藏了…MySql索引