广告
返回顶部
首页 > 资讯 > 数据库 >MySQL 8.0新特性-不可见索引
  • 753
分享到

MySQL 8.0新特性-不可见索引

2024-04-02 19:04:59 753人浏览 泡泡鱼
摘要

官方文档: https://dev.Mysql.com/doc/refman/8.0/en/invisible-indexes.html mysql 8.0 invisible index学习 Mysq

官方文档: https://dev.Mysql.com/doc/refman/8.0/en/invisible-indexes.html

mysql 8.0 invisible index学习

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标志控制了优化器是否使用不可见索引来构建执行计划。 如果use_invisible_indexes=off(默认设置),优化器会忽略不可见索引;如果设置为on,索引仍然不可见,但是优化器在生成执行计划的时候会考虑不可见索引。

化器在生成执行计划的时候会考虑不可见索引。

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.

MySQL 8.0新特性-不可见索引

举例:

MySQL 8.0新特性-不可见索引

alter table t1 alter index i_idx invisible;

MySQL 8.0新特性-不可见索引

索引设置为不可见,优化器便不考虑此索引,也就是说如果没有该特性,你就得删除该索引和重建该索引来测

您可能感兴趣的文档:

--结束END--

本文标题: MySQL 8.0新特性-不可见索引

本文链接: https://www.lsjlt.com/news/47354.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作