AndroidのContentResolver経由でDBアクセスしたときの速度調査を行なったので、記録。
条件
- Android 4.1.2 エミュレータ上
- 使用URI content://com.android.browser/bookmarks
- レコードとして20000件登録。うち10000件を削除状態(deleted=1)。
比較対象
ContentResolver#query()の第5引数"sortOrder"を
1. null
2. "_id asc"
で確認。
以下、3回実施しての平均値(ms)。
全件取得
- 1981
- 1133
10件取得(先頭から)
- 2219
- 81
100件取得(先頭から)
- 1441
- 90
1000件取得(先頭から)
- 1470
- 198
10件取得(8000件目から)
- 1498
- 223
100件取得(8000件目から)
- 1841
- 246
1000件取得(8000件目から)
- 1540
- 338
まとめ
ソートを入れない方が、全体的に検索結果が遅くなる。
さらに、取得件数や取得位置といった条件に比例した時間とならず、不安定な結果に見える。