在Android中存储SQLite Cursor是一个坏主意吗?

时间:2012-02-26 18:19:07

标签: android performance sqlite cursor

我正在尝试在Android上实现字典应用程序。当用户在EditText中输入一个字母(或删除一个字母)时,应用程序将查询数据库并显示所有以EditText中的文本开头的条目。由于我使用的数据库包含超过80000行,因此查询的性能不如我想要的那么好。但是,当用户从EditText中删除字符时,会出现真正的问题。因此,我想把Cursor对象存储在Stack中。当用户删除一个字符时,应用程序从堆栈中弹出前一个Cursor并使用它。存储从SQLite查询返回的Cursor对象是一个坏主意吗?

3 个答案:

答案 0 :(得分:2)

SQL数据库可能根本不是正确的工具,因为使用“like”的查询在关系数据库中并不是真正的性能。如果通过为每个条目存储(和索引)前缀来对数据进行非规范化,则可能会获得更好的性能。并且不要忘记添加一些分数,以确定条目的优先级(例如,如果选择条目给它更高的分数)

答案 1 :(得分:0)

在你的情况下,我会说存储这么多游标是个坏主意。游标对象本身包含查询的所有结果。

答案 2 :(得分:0)

如果您使用AutoCompleteTextView,则已为您提供此功能。我建议你看一下Auto Complete tutorial