我们通常使用limit进行分页查询

select * from table_name where val=4 order by id limit 100,10;

当偏移量很大时,会遇到性能问题

select * from table_name where val=4 order by id limit 1000000,10

原因:上述语句查出了1000000条数据,然后丢弃掉999990条,做了很多无用功

解决办法:使用子查询

select * from table_name a inner join (select id from table_name where val=4 order by id limit 1000000,10) b on a.id=b.id

以上改写能够提高效率的原因是先查出满足条件的10个id(主键),再回表去查这10个id对应的行记录

相关文章:

  • 2021-10-19
  • 2022-12-23
  • 2021-09-06
  • 2022-01-23
  • 2021-12-28
  • 2021-09-09
  • 2021-08-19
  • 2022-12-23
猜你喜欢
  • 2021-05-19
  • 2022-12-23
  • 2022-01-13
  • 2021-11-14
  • 2022-12-23
  • 2021-08-28
相关资源
相似解决方案