美文网首页
msyql 一个索引优化的问题

msyql 一个索引优化的问题

作者: 風過無痕_d1cc | 来源:发表于2018-10-24 10:51 被阅读0次
  1. 问题:执行一个左关联查询,速度非常慢,有四五分钟,起初以为没加索引,检查后发现索引都是加好的,于是查看sql执行计划,如下:
EXPLAIN SELECT * FROM p_t_nc_relation a LEFT JOIN ms_region b ON a.source_id  =  b.ID  WHERE b.ID IS NULL
  结果如图:
图片.png

通过sql执行计划可以看到扫描的是全表。
后来找到了问题,查询速度慢是因为关联查询的字段类型不一致导致的
p_t_nc_relation 中的source_id 是bigint型的,ms_region 中的id 是varchar型的,所以导致索引失效了。

2.解决方法:
查询的时候将bigint型的转为varchar型
sql如下:

EXPLAIN SELECT * FROM p_t_nc_relation a LEFT JOIN ms_region b ON CAST(a.source_id AS CHAR) =  b.ID  WHERE b.ID IS NULL 
    更改sql后的结果如图:
图片.png
现在能看到索引已经起到作用了,查询速度飞快
其实基于这种已经加上索引,但是查询速度还很慢的问题,也可以从数据库编码,表编码,字段编码方向去考虑解决,有时候编码不一致也会导致这种问题。
关于编码问题导致的索引失效,链接:https://blog.csdn.net/everda/article/details/77476716

相关文章

网友评论

      本文标题:msyql 一个索引优化的问题

      本文链接:https://www.haomeiwen.com/subject/bzsttqtx.html