我有一个钛appcelerator查询,如下所示:
"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个左右的结果,但事实并非如此。我的索引是不正确的,还是我错过了什么?
答案 0 :(得分:1)
这并没有真正解决我的问题 - 因为最终,正如CL指出的那样,正是代码列出了问题的条目。
Titanium的TableView并不是非常高效。我已经switched to using ListView.了。这要快得多,并解决了我的问题。