让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
发出的红包

打赏作者

shsh1234567890

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

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

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

打赏作者

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

抵扣说明:

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

余额充值