我试图尽可能简化我的情况,所以它看起来不太真实,对不起。但这是基于一个真正的担忧。
假设我有一个小型 Android 应用程序向用户显示当前温度。温度每秒都在变化,应用程序一直在工作。
该应用程序还有一个“审计”数据库表:
CREATE TABLE TemperatureAudit (
secondsFrom1970 INTEGER not null,
temperature INTEGER not null);
在此应用程序运行一年后,审计表将非常大。让我们想象一下,如果不是真的有必要,我不想截断它。
所以对于那些知道 sqlite 如何在 Android 上工作的人来说,问题是:我应该担心吗?
- 当我不使用它时,sqlite 会尝试将这个大表加载到 RAM 中吗?例如,当我从不同的表中选择时。
- 如果我尝试“从温度 > 0 的温度审计中选择计数”,sqlite 会一个接一个地加载这个大表吗?或者它会将整个表加载到 RAM 中吗?
- 如果 sqlite 对内存分配不太吝啬我该怎么办?将此表移动到另一个数据库有助于解决第一个问题吗?表分区对第二个有帮助吗?