【问题标题】:titanium appcelerator query is slow钛加速器查询很慢
【发布时间】: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 个项目的查询大约需要两秒钟,这对我来说似乎是不合适的。
  • 慢的部分可能是你的代码对记录做了一些事情。
  • 你怎么敢暗示我的代码很草率!在这里,让我做一些检查以...证明...哦,我的,嗯...

标签: sqlite indexing titanium


【解决方案1】:

这并不能真正解决我的问题 - 因为最后,正如 CL 指出的那样,问题在于生成条目列表的代码。

Titanium 的 TableView 性能不是很好。我从 switched to using ListView. 开始,这要快得多,并且解决了我的问题。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多