让mysql的sql执行效率提高10倍的方法(原创)

今天同事说mysql某表查询的非常慢,数据量79万,执行时间大约是20秒,sql发我了

select count(1) from cs_ship where deleted=1
AND appear_time >=STR_TO_DATE('2023-02-14 00:00:00',"%Y-%m-%d %H;%i:%s') AND(
mmsi shipname LIKE CONCAT('皖明光货,%) OR
shipName LIKE CONCAT('皖明光货,%') OR
shipname_updated LIKE CONCAT('皖明光货,1%)

经过我的优化后,执行速度15秒,还是不够快

select count(1) from cs_ship where deleted=1
AND appear_time >=STR_TO_DATE('2023-02-14 00:00:00','%Y-%m-%d %H;%i:%s') and 
( mmsi_shipname LIKE '%皖明光货%' or
shipName LIKE '%皖明光货%' or
shipname_updated LIKE '%皖明光货%')

经过我的再次优化后,执行速度2秒,差不多了

select count(1) from (
select   t.* from cs_ship t  where deleted=1
AND  appear_time >=STR_TO_DATE('2023-02-14','%Y-%m-%d')
) s
 where  
  s.mmsi_shipname LIKE '皖明光货%' or
s.shipName LIKE '皖明光货%' or
s.shipname_updated LIKE '皖明光货%' 

经验总结,同事虽然加了索引,但是一次查询还是慢,用了子查询之后就快了,YYDS哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

信息安全与项目管理

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

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

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

打赏作者

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

抵扣说明:

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

余额充值