我正在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倍?
暂无答案!
目前还没有任何答案,快来回答吧!