美文网首页
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