queryForAll()的Android ORMlite性能问题

queryForAll()的Android ORMlite性能问题,android,ormlite,performance,Android,Ormlite,Performance,好吧,正如标题所说,如果有必要的话,我使用android的ormLite在DAO对象上执行queryForAll时遇到了一些性能问题 我实际做的唯一一件事就是执行以下操作: this.getHelper.getActivityDao.queryForAll;其中this.getHelper返回从OrmLiteSqliteOpenHelper类扩展的数据库帮助程序 这一行实际上需要大约14秒来执行。。。嗯,活动实体得到了大约80个字段,queryForAll返回了一个长度为74个对象的数组,但是—

好吧,正如标题所说,如果有必要的话,我使用android的ormLite在DAO对象上执行queryForAll时遇到了一些性能问题

我实际做的唯一一件事就是执行以下操作:

this.getHelper.getActivityDao.queryForAll;其中this.getHelper返回从OrmLiteSqliteOpenHelper类扩展的数据库帮助程序

这一行实际上需要大约14秒来执行。。。嗯,活动实体得到了大约80个字段,queryForAll返回了一个长度为74个对象的数组,但是——这不可能是正常的,不是吗

对于日历字段,我使用

@DatabaseFielddataType=DataType.SERIALIZABLE

注释,我不确定,这是否是日历字段的正确注释,或者它是否会导致性能问题

这一行实际上需要大约14秒来执行。。。嗯,活动实体得到了大约80个字段,queryForAll返回了一个长度为74个对象的数组,但是——这不可能是正常的,不是吗

查询forall不应该花费很长时间,除非您可能怀疑表中有大量对象,或者每个对象中都有大量数据。在这种情况下,queryForAll基本上必须转储整个表并创建大量对象

对于较大的查询,建议使用迭代器,而不是转储整个表:

例如,可以按如下方式运行查询中的所有对象:

// page through all of the accounts in the database
for (Account account : accountDao) {
   // do something with each account here
}
这一行实际上需要大约14秒来执行。。。嗯,活动实体得到了大约80个字段,queryForAll返回了一个长度为74个对象的数组,但是——这不可能是正常的,不是吗

查询forall不应该花费很长时间,除非您可能怀疑表中有大量对象,或者每个对象中都有大量数据。在这种情况下,queryForAll基本上必须转储整个表并创建大量对象

对于较大的查询,建议使用迭代器,而不是转储整个表:

例如,可以按如下方式运行查询中的所有对象:

// page through all of the accounts in the database
for (Account account : accountDao) {
   // do something with each account here
}

您所讨论的类是否有使用ORM自动刷新的外来对象或集合?例如,我指的是用foreignAutoRefresh=true注释的成员或用@ForeignCollectionFieldeager=true注释的集合。这些注释将代表您执行更多查询


如果是这样的话,您可能无意中收回了比您想象的更多的数据。在这种情况下,我将使用queryRaw并手工编写一个join语句来获取所需的数据。

您所讨论的类中是否有使用ORM自动刷新的外来对象或集合?例如,我指的是用foreignAutoRefresh=true注释的成员或用@ForeignCollectionFieldeager=true注释的集合。这些注释将代表您执行更多查询


如果是这样的话,您可能无意中收回了比您想象的更多的数据。在这种情况下,我将使用queryRaw并手动编写一个join语句来获取所需的数据。

@上面没有,我没有得到任何外来对象或自动刷新集合。但是,如果我使用迭代器,而不是DAO中的queryOfAll方法,系统似乎会更快。。。我还意识到,如果我只是在android设备上使用应用程序,而不是通过我的pc进行调试,那么它也会更快。因此,如果我在eclipse中进行调试模式,查询现在需要1-2秒,大约7-8秒。。。应该可以,很好。使用ORMLite会带来性能损失,但做出正确的呼叫决策将改善问题@user1502353.Hi Gray!你能给我一些简短的建议如何在android ListAdapter中使用ormlite迭代器吗?或者可能是CursorAdapter?我不能@deviant,因为我不是Android程序员。我建议您将此问题发布到ORMLite Android列表中:@以上,没有,我没有收到任何外来对象或自动刷新集合。但是,如果我使用迭代器,而不是DAO中的queryOfAll方法,系统似乎会更快。。。我还意识到,如果我只是在android设备上使用应用程序,而不是通过我的pc进行调试,那么它也会更快。因此,如果我在eclipse中进行调试模式,查询现在需要1-2秒,大约7-8秒。。。应该可以,很好。使用ORMLite会带来性能损失,但做出正确的呼叫决策将改善问题@user1502353.Hi Gray!你能给我一些简短的建议如何在android ListAdapter中使用ormlite迭代器吗?或者可能是CursorAdapter?我不能@deviant,因为我不是Android程序员。我建议您将此问题发布到ORMLite Android列表: