我想知道是否可以创建一个SQLite数据库,在其中我可以用O(1)用select
rowid
行。
我开始在我的一个项目中使用sqlite数据库,并发现select
从较大数据库中的行比select
从较小数据库中的行花费的时间更长。我开始在线搜索,偶然发现this article。显然,当用select
rowid
进行访问时,SQLite不会直接进入rowid
,而是执行二进制搜索来获取请求的rowid
。这是一个非常合乎逻辑的解决方案,因为我们可以从数据库中删除行,在这种情况下,直接进入rowid
是行不通的。
但就我而言-我有一个“不可变的”数据库,创建数据库后,我没有对其进行更改;因此,所有rowid
都以正确的顺序出现。
因此,我想知道是否可以创建一个特殊的数据库或使用特定的查询命令,该命令告诉SQLite通过访问rowid
进行选择而无需任何二进制搜索。
如果还有其他SQLite替代方案可以更好地满足我的情况,请通知我(尽管在我的项目中,我无法将数据库加载到内存中,并且同时访问不同的数据库应该是瞬时的)< / p>
谢谢。