以下是我用于从具有数百万条记录的数据库中获取固定数量记录的查询:-
select * from myTable LIMIT 100 OFFSET 0
我观察到的是,如果偏移量非常高,比如 90000,那么执行查询需要更多时间。以下是具有不同偏移量的 2 个查询之间的时间差:
select * from myTable LIMIT 100 OFFSET 0 //Execution Time is less than 1sec
select * from myTable LIMIT 100 OFFSET 95000 //Execution Time is almost 15secs
谁能建议我如何优化此查询?我的意思是,对于我希望从任何 OFFSET 检索的任意数量的记录,查询执行时间应该相同且快速。
新增:- 实际情况是我有一个数据库超过 100 万条记录。但由于它是嵌入式设备,我不能执行“select * from myTable”然后从查询中获取所有记录。我的设备崩溃了。相反,我所做的是按照上面提到的查询逐批(批量大小 = 100 或 1000 条记录)获取记录。但正如我所提到的,随着偏移量的增加,它变得很慢。所以,我的最终目标是我想从数据库中读取所有记录。但由于我无法在一次执行中获取所有记录,因此我需要一些其他有效的方法来实现这一点。