现有sql语句:
①select * from tab1 where number = '5' and mode >= 1 and mode <= 21 order by id desc limit 100;
②select * from (select * from tab2 where mode >= 1 and mode <= 21 and name = '5' and create_time >= '2018-01-01' and create_time <= '2019-09-04' order by id desc) A order by id;
请问这两句sql该如何建立索引以达到优化的目的?对于①,我建立了联合索引,key(number,id)但是explain的时候提示没有用到该索引,用的是主键索引。
SQL1:key (number,mode)
SQL2为什么外层要排序,直接在子查询里order by id不行么?
可以使用 force_index 强制指定索引
第一个sql你那个等号和order by根本不在一个步骤里,怎么可能联合呢...
第二个sql把子查询 去掉,就用括号里的sql,把desc去掉。