MySQL 索引快问快答
MySQL 索引的 12 个小问题
1、LIKE 会不会走索引
% 在前的模糊匹配不走索引
2、索引列能不能为空
可以,但是当为空数据比较少的时候,查询 is not null 会全表扫描
3、函数计算会不会走索引
一般不会,另外需要注意,执行计划中的 type = index ,这个查询效率不高,是全索引扫描,虽然用到了索引,但是是索引扫描,不是索引搜索,效率比较低
4、类型不一致会不会走索引
具体问题具体分析,不一定
5、WHERE 条件顺序怎么写
记住最左前缀,其他不重要,另外一个查询是可以用到多个索引的,例如:使用 OR 连接的多个单列索引查询
6、要不要使用 UNION 替换 OR
可以,但是 SQL 变复杂了,另外如果后面分库分表,是否支持需要考虑一下
7、EXISTS VS IN
子查询结果少用 in,结果多用 exists。
8、非等于是否走索引
一般不走,特殊情况是:主键或者 count(*)会走
9、索引覆盖
尽量不要使用 select *
10、用子查询还是表关联
大部分子查询都可以用表关联替换,建议使用表关联
11、表关联之大小表
优化器,自己可以优化,不用关注是大表关联小表,还是小表关联大表
12、分页的玩法
深分页较好方案就是子查询 + 索引覆盖
#2022春招##笔试题目##Java##MySQL##学习路径##八卦##交友##技术栈#
