我使用批处理查询来使我的应用程序更具响应性。这是一次获取所有内容的改进,但是,当滚动结果时,我的设备在加载下一组结果时存在明显的延迟(约 500 毫秒)。我推断排序导致滞后(删除ORDER BY导致平滑滚动的结果)。
SELECT myTable.itemID 
FROM myTable  
ORDER BY myTable.order ASC 
LIMIT 30
然后
LIMIT 30 OFFSET 30
LIMIT 30 OFFSET 60
etc...
告诉我它使用EXPLAIN QUERY PLAN临时二叉树进行排序(尽管有可用的索引)。
SCAN TABLE myTable (~1000000 rows)
USE TEMP B-TREE FOR ORDER BY
- 我可以提高分拣速度吗?从文档中可以看出,排序 - O ( N logN )无论是使用二叉树还是索引。
- 我可以避免对后续请求进行排序吗?即以某种方式重新使用结果中的第一个排序 - LIMIT 30结果 from- LIMIT 30 OFFSET 30?
- 还有其他策略可以提供帮助吗?