项目实战--2 sql优化

背景:

Sql查询速度缓慢,造成接口调用超过1s,接下来要针对问题出现的原因对sql语句进行优化

执行下面查询语句:

EXPLAIN SELECT
    aui.ding_phone,
    aui.ding_name,
    aui.chaoxing_name,
    aui.chaoxing_phone
FROM
    (
        SELECT
            info_id
        FROM
            arpro_user_course_info
        WHERE
            course_id = 223667994
        AND class_id = 55801765
        AND is_delete = 0
        GROUP BY
            info_id
    ) auci
LEFT JOIN arpro_user_info aui ON auci.info_id = aui.id

course_id字段、is_delete字段和class_id字段没加索引时

添加索引之后

select_type 表示对应行是简单还是复杂的查询,primary表示复杂查询中最外层的 select,derived表示包含在 from 子句中的子查询

table表示访问到的表,<derived2>表示有子查询并且id为1的查询以来id为2的子查询,id2子查询先于id1执行。

type列为all表示全表扫描,没有使用索引,效率由高到低分别为system > const > eq_ref > ref > range > index > ALL,查询至少达到range级别。

possible_keys显示查询可能使用哪些索引来查找

key表示mysql实际采用哪个索引来优化对该表的访问。

添加索引的效果是扫描的行数明显减少。

distinct和group by的区别:

实践表明,没有用到索引的情况下,distinct效率高于group by。因为distinct 和 group by都会进行分组操作,但group by可能会进行排序。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值