#java #android #sql #sqlite
Есть ли разница в скорости получения данных из таблицы SQLite на Android: Первый вариант: ArrayListarrayList; 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().
Комментариев нет:
Отправить комментарий