2

あまりにも高価なcursor.getCount()に代わるものがあるかどうか疑問に思っています! 私の目標は、最初に 1 つのクエリを実行することです。カーソルが null または cursor.getCount() <=0 の場合は、別のクエリを実行する必要があります。

しかし、基になるデータが大きくなる可能性があるため、getCount() 呼び出しに対して Application Not Responding が発生していました。それを行うためのより良い解決策はありますか?

4

4 に答える 4

2

カーソルが空の場合、moveToFirst は false になります

于 2013-08-09T21:48:26.060 に答える
2

テーブルに行があるかどうかだけを知りたい場合、非常に最適なクエリは次のとおりです。

SELECT EXISTS (SELECT * FROM <tableName>);

これは とは異なり、テーブル全体をスキャンするわけではなくcount()、iPhone 上の 250,000 件以上のレコードを持つテーブルに対して 2 ミリ秒未満で実行されるため、サイズに応じて確実にスケーリングされます。

于 2013-08-24T08:22:24.363 に答える
1

Cursor.getCount()ほとんどの (すべてではないにしても)Cursorメソッドが最終的にそれを呼び出すため、使用を避けるのは非常に困難です。ソース コードを参照してください

クエリで句を使用しlimitて制限を 1 に設定し、クエリから返されたカーソルが空かどうかを確認してみてください。

于 2016-09-10T21:39:55.410 に答える
0

限られたフィールドで最初のクエリを実行します。たとえば、最初のクエリは _id に対してのみ実行される場合があります。

于 2013-08-09T21:17:09.533 に答える