您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > MySQL

计一次mysql left join 查询不走索引的问题

时间:05-14来源:作者:点击数:

前言

本地有两张表 alarm闹钟表和alarm_order闹钟订单表

在alarm_order订单表中有alarm_id建立了索引,但是发现在left join查询的时候没有走索引查询,使用了全文搜索

在这里插入图片描述

问题分析

乍一看,sql语句似乎并没有问题

1、首先,来观察下两张表的字符类型是否相同
在这里插入图片描述

发现两张表的字符类型确实不一样,随后把表1改为utf8,再次查询发现依旧不起作用

2、最后发现可能是alarm_order表中的alarm_id的基数太小了,mysql判断全文搜索速度要快,则进行全文搜索。后发现确实是这个问题

解决办法

mysql在一个表如果索引基数过小的情况下默认会走全文搜索,所以对于表业务量过大但是索引字段基本上为同一数据或null的情况 还是需要在sql中写死强制索引

在sql中使用强制索引解决办法 left join 后添加 force indes(alarm_id)

因为业务数据的关系,我这边alarm_id的基数确实就是很小,为了走索引查询,直接加上强制索引查询

在这里插入图片描述

再次测试,问题解决!!~~

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门