#java #android #sql #sqlite
Есть ли разница в скорости получения данных из таблицы SQLite на Android:
Первый вариант:
ArrayList arrayList;
Cursor c = db.rawQuery("select a,b,c from table");
for (int i = 0; i < c.getCount(); i++) {
arrayList.add(c.getString(0));
}
Второй вариант:
ArrayList arrayList;
for(int i=0; i < count; i++){
Cursor c = db.rawQuery("select a,b,c from table where a = " + i)
String a = c.getString(0);
arrayList.add(a);
}
Мне нужен второй способ, но он вызывает у меня сомнения. Если он тратит больше времени,
то есть ли другой, более быстрый, но чтобы данные получались последовательно, вместо
возвращения целого курсора с данными?
Ответы
Ответ 1
Второй вариант вероятно будет работать гораздо медленнее. Если есть возможность получить все данные одним обращением к БД(1 вариант), т.к. зачем вы намеренно обращаетесь к бд множество раз(2 вариант)? А вообще просто сравните скорость выполнения первого и второго способа на большом объёме данных. Меня только смущает в вашем втором варианте i<10. Первый вариант должен выглядеть видимо так: ArrayListarrayList; Cursor c = db.rawQuery("select a,b,c from table where a>=0 and a<10"); for (int i = 0; i < c.getCount(); i++) { arrayList.add(c.getString(0)); } Ответ 2
Я бы сделал проверку if(c.moveToFirst()), странно что вы эту команду не вызываете. А в цикле нужно использовать c.moveToNext().
Комментариев нет:
Отправить комментарий