mysql的分页查询一直都有个疑问,如果我要查找第十页的内容(偏移量offset 90),前面的90条内容在查询过程中有没有被查找过,今天终于找到了答案。
其实mysql是先查找前10页(比如前100条),然后把前90条丢弃,返回需要的91到100条数据。数据量小的时候没什么问题,如果数据量大的话就会严重影响性能。
现在给出一种解决方案,先查找出91到100条数据的id,然后再获取需要的数据,如下:
select a.field1,a.field2 from table1 a,(select id from table1 limit 100,10) b where a.id = b.id