为了账号安全,请及时绑定邮箱和手机立即绑定

【学习打卡】第21天--玩转MySQL8.0新特性第三章优化器索引

标签:
MySQL

课程名称 :玩转MySQL8.0新特性


课程章节:优化器索引


讲师:董旭阳



课程内容:

优化器索引
隐藏索引
降序索引
函数索引
隐藏索引
MySQL8.0 开始支持隐藏索引(invisible index),不可见索引。
隐藏索引不会被优化器使用,但仍然需要进行维护。
应用场景:软删除、灰度发布。

如果某个设置为隐藏的索引实际上仍然需要或者被优化器所使用,可以通过以下多种方法发现缺少该索引带来的影响:
索引提示中使用了该索引的查询将会产生错误。
性能模式(Performance Schema)中的数据显示受影响查询的负载升高。
EXPLAIN 语句显示了不同的查询执行计划。
慢查询日志中出现了新的查询语句。

降序索引只有innodb引擎支持

从 explain 解释可以看出,查询五条数据,需要扫描96491 行数据,并且使用了filesort。
降序索引只是对查询中特定的排序顺序有效,即升序索引降序排序反无效,降序索引升序排序无效。如果使用不当,反而查询效率更低,

函数索引顾名思义就是加给字段加了函数的索引,这里的函数也可以是表达式。所以也叫表达式索引。

MySQL 8.0 推出来了函数索引让这些变得相对容易许多。
不过函数索引也有自己的缺陷,就是写法很固定,必须要严格按照定义的函数来写,不然优化器不知所措。



测试表

create table t3(c1 varchar(10), c2 varchar(10));

create index idx on t3(c1);创建普通索引

create index fun_idx on t3( (UPPER(c2)) );创建函数索引语法,如c2转换为大写的结果作为索引

show index from t3\G

explain select * from t3 where upper(c2) = 'ABC'; 如果没设置函数索引就是where全表查;反之可以走索引,如用户名查询

json建索引 直接建 json会超长,所以 index((CAST(data->>'$.name' as char(30))))


课程收获:学习了mysql8.0 索引优化的相关知识,在数据量特别大是情况下,好好利用好这些索引,会大大提高我们的查询速度。

https://img1.sycdn.imooc.com//63303c380001e27511070353.jpg




点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消