我想知道 cursor.getCount() 是否有任何替代方法太贵了!我的目标是首先运行一个查询,如果 cursor 为 null 或 cursor.getCount() <=0 那么我将需要运行另一个查询。
但由于基础数据可能很大,我得到应用程序没有响应 getCount() 调用。有更好的解决方案吗?
我想知道 cursor.getCount() 是否有任何替代方法太贵了!我的目标是首先运行一个查询,如果 cursor 为 null 或 cursor.getCount() <=0 那么我将需要运行另一个查询。
但由于基础数据可能很大,我得到应用程序没有响应 getCount() 调用。有更好的解决方案吗?
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.
如果光标为空,则 moveToFirst 将为 false
很难避免使用Cursor.getCount()
,因为大多数(如果不是全部?)Cursor
方法最终都会调用它。自己查看源代码。
也许尝试limit
在查询中使用子句并将限制设置为 1,然后检查从查询返回的游标是否为空?
使用有限的字段运行第一个查询。例如,第一个查询可能只针对 _id 运行。