需求
场景:我现在有一张表,他有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