这样的几十万加的数据查询优化咋整?

项目场景:

在做一个几十万+的数据查询时,业务要求做一个最新条件筛选按钮,当点击按钮时只查询字段 国家,邮编,重量,码头为分组的不重复最新的数据。

问题描述:

SQL语句如下:
select id,country,code,weight,port_code,del_flag from XXX
where id in (
select Max() as id from XXX where
del_flag = ‘0’
group by
country,
code,
weight,
port_code
order by id
)
limit 20

其中where部分就是最新按钮的查询条件,当勾选时加上这个条件,不勾选时查询全部。ID为自增张主键。Long类型。
但是由于数据量太大,并没有在查询语句中使用到county,weight,code,port_code作为条件,导致以他们建立的索引未生效,又因为使用了IN,导致查询效率更慢了,尝试过更换IN为EXISTS,但是查询效率虽然快了,但是并不符合业务要求,没有将重复的且ID值小的部分剔除掉。

解决方案:

试了好几种方法都不行,希望论坛里有大神能给指导一下。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值