MySQL8.0中invisible index特点及作用
不知道大家之前对类似MySQL8.0中invisible index特点及作用的文章有无了解,今天我在这里给大家再简单的讲讲。感兴趣的话就一起来看看正文部分吧,相信看完MySQL8.0中invisible index特点及作用你一定会有所收获的。
invisible index特点
默认创建的索引都是visible,如果需要invisible索引创建的时候需要指定invisible参数。
默认无法使用invisible index索引,需要开启参数optimizer_switch='use_invisible_indexes=on'才能使用;
使用force index也无法使用,会报错;
索引的visible和invisible属性可以相互转换,即使表很大,这个过程也是很快的;
primary key不能改成invisible;
invisible index作用
在生产环境中,往往一个表是非常大的,我们想要测试一条SQL不使用某个索引的执行效率,如果直接删除这个索引,可能代价比较大,但是把索引改成不可见模式,再去测试,时间是很快的。
mysql> create index idx_emp_no on t_group(emp_no) invisible;
Query OK, 0 rows affected (0.22 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show index from t_group;
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Visible | Expression |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
| t_group | 1 | idx_emp_no | 1 | emp_no | A | 10 | NULL | NULL | | BTREE | | | NO | NULL |
+---------+------------+------------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+------------+
1 row in set (0.08 sec)
mysql> desc select * from t_group where emp_no=31112;
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------------+
| 1 | SIMPLE | t_group | NULL | ALL | NULL | NULL | NULL | NULL | 10 | 10.00 | Using where |
+----+-------------+---------+------------+------+---------------+------+---------+------+------+----------+-------------+
1 row in set, 1 warning (0.00 sec)
mysql> desc select * from t_group force index(idx_emp_no) where emp_no=31112;
ERROR 1176 (42000): Key 'idx_emp_no' doesn't exist in table 't_group'
mysql> desc select * from t_group where emp_no=31112;
+----+-------------+---------+------------+------+---------------+------------+---------+-------+------+----------+-------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+---------+------------+------+---------------+------------+---------+-------+------+----------+-------+
| 1 | SIMPLE | t_group | NULL | ref | idx_emp_no | idx_emp_no | 4 | const | 1 | 100.00 | NULL |
+----+-------------+---------+------------+------+---------------+------------+---------+-------+------+----------+-------+
1 row in set, 1 warning (0.00 sec)
看完MySQL8.0中invisible index特点及作用这篇文章,大家觉得怎么样?如果想要了解更多相关,可以继续关注我们的行业资讯板块。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341