Android:需要关于SQLite的建议,搜索速度慢
我必须搜索一个数据库,它有26024个条目,并且正在计数。它过去速度快,记录少,但现在需要10秒左右的时间,这会减慢应用程序的速度。我想知道我是否能得到关于如何加快进程的建议,或者我是否做错了什么。这是代码Android:需要关于SQLite的建议,搜索速度慢,android,performance,sqlite,search,optimization,Android,Performance,Sqlite,Search,Optimization,我必须搜索一个数据库,它有26024个条目,并且正在计数。它过去速度快,记录少,但现在需要10秒左右的时间,这会减慢应用程序的速度。我想知道我是否能得到关于如何加快进程的建议,或者我是否做错了什么。这是代码 while (cursor.moveToNext()) { String word = cursor.getString(0); if (word.equals(input)) {
while (cursor.moveToNext()) {
String word = cursor.getString(0);
if (word.equals(input)) {
String nikus = cursor.getString(1);
String def = cursor.getString(2);
ret.append(" " + nikus + "\n"+ def + "\n");
g = null;
}
编辑:
在我的数据库中,我有一个定义表,表中有3个字段,一个是要比较的单词,第二个是完整单词,第三个是定义本身。希望这对你们有点帮助
CREATE TABLE [definitions] (
[word] TEXT,
[fullword] TEXT,
[definition] TEXT);
编辑:这是我得到的错误
01-04 00:47:54.678:E/CursorWindow(4722):需要增长:mSize=1048576,size=17,freeSpace()=13,numRows=15340。您应该使用where子句运行select,该子句只回拉word等于输入的行(不要忘记区分大小写)。word列上的索引将帮助查询更快。您可以将此方法放入另一个线程。将上面描述的代码放入run()中,然后调用start()。如果你不介意我问的话,这将如何加快搜索过程?看起来你正在做一个完整的表格扫描,检查表格中的每个条目。您应该将处理从应用程序向下推到sqlite引擎级别。发布您的数据库架构和查询,以便我们可以帮助您使其性能更好。@Freddy我建议您稍微阅读一下数据库基础知识。我并不是说这是侮辱,但你对数据库不是按字母顺序排列的评论表明你对关系数据库的工作方式缺乏了解。除非您添加索引,否则就数据库而言,您的数据总是无序的,无论插入数据时是否按字母顺序排列。如果一个单词中有更多的thaqn怎么办?@Freddy您可以使用IN子句。i、 e其中[word]位于(输入1、输入2、输入3等)