【发布时间】:2013-10-24 20:14:43
【问题描述】:
我为我的 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
唯一的问题是 db 文件大小,大约 18 MB,变成了 29.5 MB
【问题讨论】:
标签: sqlite select lua coronasdk