sql调优

需求

场景:我现在有一张表,他有100多万条数据,我想要通过id_key 去重(id_key 只是一个字段,表示的是业务的主键,数据库中没有进行任何设置),

sql

select * from table_name where id_key = 'x';

数据有1百多万条,需要优化一下sql,于是使用explain 来解析sql,发现type 是 all,并没有走索引

explain select * from table_name where id_key = 'x';

在这里插入图片描述

添加索引后
在这里插入图片描述

索引type级别说明:

system>const>eq_ref>ref>range>index>ALL

问题二:

还想这样简单的建索引,解决不了我的需求,因为我的sql 存在有limit ,当limit 1000000 时,其数据就会存在不走索引的情况

可以优化sql为:

explain select bohr.* from report bohr 
INNER JOIN (select id from report
where  cr_unit = 'NA' and  is_deleted = 'N'
order by cr_date desc, id desc 
limit 100000, 10 ) temp
on bohr.id = temp.id  
where bohr.is_deleted = 'N' 
order by bohr.cr_date desc, bohr.id desc 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值