我想知道是否有任何替代cursor.getCount()这太贵了!我的目标是首先运行一个查询,如果cursor为null或cursor.getCount()< = 0那么我将需要运行另一个查询。
但是由于底层数据可能很大,我得到了getCount()调用的Application Not Responding。任何更好的解决方案吗?
答案 0 :(得分:2)
如果您只想知道表中是否有任何行,那么一个非常优化的查询将是:
SELECT EXISTS (SELECT * FROM <tableName>);
与count()
不同,它不会扫描整个表格,而且对于iPhone上有250,000条记录的表格,它会在不到两毫秒的时间内执行,所以它肯定会随着大小而缩放。
答案 1 :(得分:1)
如果光标为空,则moveToFirst将为false
答案 2 :(得分:0)
使用有限字段运行第一个查询。例如,第一个查询可能仅针对_id运行。
答案 3 :(得分:0)
要避免使用Cursor.getCount()
是非常困难的,因为大多数(如果不是全部?)Cursor
方法最终会调用它。 See the source code for yourself
也许尝试在查询中使用limit
子句并将限制设置为1,然后检查从查询返回的游标以查看它是否为空?