MySQL百万数据模糊查询优化

最近项目需求,有400万用户的模糊查询,带4个查询条件,加上排序,最后不完美实现。

记录过程如下:

模拟了400万条数据

先建立复合索引

首先解决模糊查询的问题,使用覆盖索引只查询主键,通过执行计划可以看出走了索引。

select vid from t_vt_info t where full_name like '%张%'

然后增加查询条件,执行计划可以看到,仍然可以走复合索引。

select vid from t_vt_info t where 
full_name like '%张%' 
and fee_year=0 
and registered_city_code='230100' 
and registered_district_code='230103' 

加上排序和分页

select vid from t_vt_info t where 
full_name like '%张%' 
and fee_year=0 
and registered_city_code='230100' 
and registered_district_code='230103' 
order by full_name desc
limit 1,10

查询全部字段,需要加一层innerjoin

select * from t_volunteer_info a INNER JOIN
(select vid from t_volunteer_info t where 
full_name like '%张%' 
and fee_year=0 
and registered_city_code='230100' 
and registered_district_code='230103' 
order by full_name desc
limit 1,10) b on a.vid=b.vid

 至此,sql优化完成。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

行走的冬瓜

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

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

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

打赏作者

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

抵扣说明:

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

余额充值