查询优化(TTFB过长)left join索引未生效

今天发现页面初始化加载时间过长,(TTFB)等待状态竟然花费了近7s,要对此页面加载进行优化,减少加载时间

在这里插入图片描述
执行页面查询对应的sql;发现table f的type为ALL,以为未加索引;

在这里插入图片描述
找到该表查看,有索引;那么问题应该就是索引未生效;想了一下失效的种种原因竟然都不满足,有点纳闷;
在这里插入图片描述
最后发现JBS_PROJECT_PROFIT f ON f.PROJECT_ID = p.ROW_ID中的f.PROJECT_ID = p.ROW_ID字符集和排序规则不同;于是统一之后,sql执行时间未0.5s,页面立马加载好了。索引成功优点很明显,极大提高了查询效率。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
总结一下:
       页面查询加载慢,考虑该查询功能是否包含了冗余的处理;
       查看对应的sql是否规范,是否添加了索引;

  • 索引失效部分情况:
    • 表的字符集不同
    • 在where条件中进行运算
    • like %%,且以通配符开头(‘%abc…’)mysql索引失效会变成全表扫描的操作
    • 在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描
    • 组合索引不满足最左匹配原则
    • 两列做比较
    • is not null
    • not in和not exists等等

小结
本文记载了自己在工作中遇到页面加载时间过长情况,通过代码及sql最后定位到原因索引失效,最终确认列的排序规则不同也会导致索引失效,有点意料之外,记录一下,在实践中会遇到各种奇怪的问题,静下心来,解决方式往往在不起眼的位置。

活动地址:CSDN21天学习挑战赛

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值