关于数据库加上索引查询依旧比较慢的情况

1. 使用场景

  • 在做项目中的数据日报的时候,需要实时的去查询,所以需要关联的表比较多,所以造成数据查询比较慢

2. 问题分析

  1. 看能不能优化一下业务,减少表之间的关联
  2. 看一下是不是需要添加一些索引,使用索引进行优化

3. 问题解决

  1. 在业务方面已经没有什么可以优化的地方了,所以表关联优化失败
  2. 该添加的索引已经加上了,没有再可以添加的索引了
  3. 最后,实在没办法了,只能通过使用数据库底层存储原理的知识来进行分析了
    • 中所周知,数据库底层存储使用B+树,并且是典型的行式存储数据库,数据在数据库中时以数据页的形式来存储在磁盘上,一般来说每个数据页大小是16KB
    • 也就是说,如果一条记录字段过多或者数据过多,那么每个数据页存储的记录就很少,就需要更多的数据页,每次查询都需要从磁盘读取,需要消耗IO资源,频繁的读取就需要消耗更多的IO资源
    • 但是我们是不能通过改减少字段或减少数据来优化查询,这个是不可能的
    • 所以在数据库中存在这种思想吗,或者方法吗?存在的,就是索引下推
    • 就是一个查询中字段如果都在联合索引中,数据库会计算使用索引下推还是其他索引方式更加消耗资源
    • 一般来说,如果表字段过多,极端情况下有超过50多个,一般索引下推是可以选择的
  4. 所以找出了一张表,其字段共有60个左右,但是在这个SQL实际使用到的也才7个左右,并且数据记录数大概在百万级,所以使用了索引下推这种极端方式
  5. 最后,查询时间优化减少了一半好多

4. 总结

  • 最后会有人问,为什么不优化表结构,拆分表呢,或者是分表呢
  • 答:
    1. 中途入场,属于半运维项目,并且这个表用的太频繁了,臣妾做不到😑
    2. 这边分工比较明确,而且我不是DBA,没法从服务器中优化数据库
    3. 存在索引失效的情况,即使解决了,查询依旧很慢
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_43876924

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值