我为我的 corona/lua 应用程序创建了一个带有 sqlite 的表。这是一个具有 ~=700 000 个值的哈希表。该表有两列,分别是哈希码(一个字符串)和值(另一个字符串)。在程序中,我需要通过提供哈希码多次获取数据。
我正在使用类似这样的代码来获取数据:
for p in db:nrows([[SELECT * FROM test WHERE id=']].."hashcode"..[[';]]) do
print(p)
-- p = returned value --
end
这个声明虽然花费了太多时间来执行
谢谢,
编辑:
成功!错误在于主键。我将哈希码设置为主键,如下所示,检索时间正常:
CREATE TABLE IF NOT EXISTS test (id STRING PRIMARY KEY , array);
正如你所说,我也提前准备了声明:
stmt = db:prepare("SELECT * FROM test WHERE id = ?;")
[...]
stmt:bind(1,s)
for p in stmt:nrows() do
唯一的问题是大约 18 MB 的 db 文件大小变成了 29.5 MB