2

我想知道 cursor.getCount() 是否有任何替代方法太贵了!我的目标是首先运行一个查询,如果 cursor 为 null 或 cursor.getCount() <=0 那么我将需要运行另一个查询。

但由于基础数据可能很大,我得到应用程序没有响应 getCount() 调用。有更好的解决方案吗?

4

4 回答 4

2

If you're only interested in finding out whether the table has any rows at all, then one very optimal query would be:

SELECT EXISTS (SELECT * FROM <tableName>);

This does not scan the entire table unlike count(), and it execute in under two milliseconds for a table with 250,000+ records on an iPhone, so it definitely scales with size.

于 2013-08-24T08:22:24.363 回答
2

如果光标为空,则 moveToFirst 将为 false

于 2013-08-09T21:48:26.060 回答
1

很难避免使用Cursor.getCount(),因为大多数(如果不是全部?)Cursor方法最终都会调用它。自己查看源代码

也许尝试limit在查询中使用子句并将限制设置为 1,然后检查从查询返回的游标是否为空?

于 2016-09-10T21:39:55.410 回答
0

使用有限的字段运行第一个查询。例如,第一个查询可能只针对 _id 运行。

于 2013-08-09T21:17:09.533 回答