【发布时间】:2014-03-23 16:14:27
【问题描述】:
我有一个钛合金应用加速器查询,如下所示:
"select * from module where language_id = " + languageId + " order by id asc";
当我在我的 android 驱动的钛应用程序上运行此查询时,当给定 language_id 的条目数较低(例如,5)时,此查询会快速返回。
当条目数较多时——比如 100——那么这个查询需要更长的时间(比如多一秒)。
我在表格上使用了这样的索引:
CREATE INDEX "module_index" ON "module" ("language_id" ASC)
我使用 firefox sqlite 浏览器在表上创建了这个索引。应用程序肯定知道索引存在,因为如果在我运行的代码中
db.execute("CREATE INDEX 'module_index' ON 'module' ('language_id' ASC)");
我收到一条错误消息,指出索引已存在。我也尝试过运行
db.execute("REINDEX 'main'.'module_index'");
但这似乎并不能缓解问题。
这里的问题是什么 - 我假设在 nexus 4 上的索引表能够很快检索到 100 个左右的结果,但情况似乎并非如此。是我的索引不正确,还是我遗漏了什么?
【问题讨论】:
-
你用什么代码测量时间?有多少数据?
-
我没有使用代码来测量时间 - 我按下我的应用程序上的一个按钮,可以看到响应需要多长时间。删除 sql “get” 会使代码即时生成,并且对较大查询结果的响应需要更长的时间。表的总体大小约为 500 行,但我对 100 个项目的查询大约需要两秒钟,这对我来说似乎是不合适的。
-
慢的部分可能是你的代码对记录做了一些事情。
-
你怎么敢暗示我的代码很草率!在这里,让我做一些检查以...证明...哦,我的,嗯...