0
点赞
收藏
分享

微信扫一扫

64-MySQL(索引常见问题)

萧萧雨潇潇 2022-04-24 阅读 54

索引常见问题

问题1

在这里插入图片描述
默认是在InnoDB存储引擎。

  • 首先,最基本的,userid要加索引(因为一般用过滤条件加索引),此时创建的是二级索引树;
  • select *还要涉及回表。 而且还有order by addtime,如果addtime没有建索引的话,explain分析时会出现using filesort(涉及addtime的文件排序)!

所以,我们要加联合索引(多列索引):userid+addtime
这样的话,选出来的addtime在二级索引树上就已经是有序的了

在这里插入图片描述
有using filesort的差别,数据的外排序。用userid=123选择出来的数据越多,耗费的排序性能差的越大。
在这里插入图片描述
在这里插入图片描述主键索引:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
区分度高的字段:
在这里插入图片描述
在这里插入图片描述
例如,看下图,sex创建索引了,但是没有用到,这是MySQL server的一个优化,过滤出来的数据量已经占了整表的大部分,就没有必要用索引了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到,并没有用到索引,还是全表搜索的:
在这里插入图片描述

问题2

在这里插入图片描述

  • 一张表的一次查询只能用到1个索引,它看用a=1过滤的数据少还是b=2过滤的少;
  • 用拿个索引搜出来的数据少的话,就用哪个索引。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

问题3

举报

相关推荐

0 条评论