mysql 获取总数 太慢_SQL语句执行得很慢的原因有哪些

一 ,分两种情况讨论

1,之前执行正常 ,突然就慢了

2,一直就很慢

二,分析原因

之前正常执行突然慢了,可能有以下两种情况:遇到锁了 请求的资源正好被其他的事务加锁了 所以在等锁释放的过程导致执行慢

数据库在刷新脏页:mysql为了提高写的性能 会将修改的操作写入到内存中,当插入一条新数据或者更新数据 会在内存中将对应的字段修改,更新完之后 不是立刻同步持久化到磁盘上的。而是把这些数据写入到redolog 中 也就是说 执行了一个更新操作 将redolog buffer 写入到redo log file 在更新完内存和写完redolog 之后便通知客户端操作成功

一直就很慢,可能有以下两种情况:没有用上索引

字段没有索引 :字段上有索引,但由于自己的疏忽,没有使用索引

函数操作导致没有用上索引

系统有可能走全表扫描而不走索引

结论:由于某些原因,导致系统没有走索引,而是走了全表扫描,而这也是导致我们 SQL 语句执行的很慢的原因。

针对SQL语句的优化

1、查询语句中尽量不要使用 *

2、尽量减少子查询,使用关联查询(left join,right join,inner join)替代

3、减少使用IN或者NOT IN ,使用exists,not exists或者关联查询语句替代

4、or 的查询尽量用 union或者union all 代替(在确认没有重复数据或者不用剔除重复数据时,union all会更好)

5、合理的增加冗余的字段(减少表的联接查询)

6、增加中间表进行优化(这个主要是在统计报表的场景,后台开定时任务将数据先统计好,尽量不要在查询的时候去统计)

7、建表的时候能使用数字类型的字段就使用数字类型(type,status...),数字类型的字段作为条件查询比字符串的快

8、那些可以过滤掉最大数量记录的条件必须写在WHERE子句的最末尾

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值