sqlite是否在满足limit子句时优化(终止)排序?

62o28rlo  于 2021-07-24  发布在  Java
关注(0)|答案(0)|浏览(244)

我正在android using room中编写一些sqlite调用,我的过程中最耗时的部分是 select * from table order by x limit 20; 哪里 x 是双人间 table 可以是数万行。我的目标是优化这个过程。我在上面加索引是没有意义的 x 因为每几秒钟就有成千上万条记录被不断地重新插入,并且在上面放置一个索引将使插入过程的速度减慢(我相信这比排序过程所需的速度要慢)。
现在我知道使用堆排序如果你只对前20个条目感兴趣,你实际上不必经历整个排序过程。我知道堆排序会收敛到o(n ln n),所以我猜停在列表前20个元素的位置应该是o(n ln 20)或o(20 ln n)(不确定,太不合格,无法计算)。
我的问题是,sqlite是否意识到这一点,并在遇到问题时优化排序 LIMIT . 如果没有,我能做些什么来实现它。你能打电话吗 MAX 可能快20倍?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题