У меня этот код в активности для сбора данных из базы данных. Это займет 5 секунд до открытия активности. Без этого для работы требуется 2 секунды. Это там способ оптимизировать этот код?Android sql cursors slow
Все массивы (включая один в цикле: arr_calllog_name0) имеют 61 элемент на моем телефоне. В эмуляторе это быстро, с 6 элементами.
for (int i=0; i<arr_calllog_name0.size(); i++)
{
Cursor crname = info.getAllTitles_Stats2A(arr_calllog_name0.get(i), "1", d1, d2);
crname.moveToFirst();
count_in = crname.getInt(0);
arr_calllog_numberin0.add(String.valueOf(count_in));
Cursor crname2 = info.getAllTitles_Stats2A(arr_calllog_name0.get(i), "2", d1, d2);
crname2.moveToFirst();
count_out = crname2.getInt(0);
arr_calllog_numberout0.add(String.valueOf(count_out));
Cursor crname3 = info.sumAllTitles_StatsA(arr_calllog_name0.get(i), "1", d1, d2);
crname3.moveToFirst();
sum_in = crname3.getInt(0);
arr_calllog_durationin0.add(String.valueOf(sum_in));
Cursor crname4 = info.sumAllTitles_StatsA(arr_calllog_name0.get(i), "2", d1, d2);
crname4.moveToFirst();
sum_out = crname4.getInt(0);
arr_calllog_durationout0.add(String.valueOf(sum_out));
}
информация объявляется как HotOrNot info = new HotOrNot(ChartsDuration.this);
где HotOrNot является класс, содержащий DbHelper расширяет SQLiteOpenHelper класс.
Один запрос (другой почти такой же)
public Cursor getAllTitles_Stats2A(String name, String type, String date1, String date2) {
return ourDatabase.rawQuery("SELECT COUNT(*) FROM " + DATABASE_TABLE + " WHERE " + KEY_DATE + " BETWEEN '" + date1 + "'" + " AND '" + date2 + "'" + " AND " + KEY_NAME + " = '" + name + "'" + " AND " + KEY_TYPE + " = '" + type + "'" + " COLLATE NOCASE", null);
}
DATABASE_TABLE имеет 500 пунктов в моем телефоне.
Если вы выполняете четыре запроса на «элемент» (независимо от «элемента»), и есть 61 «элемент», это, вероятно, будет медленным. Однако, поскольку мы понятия не имеем, что такое '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ для тех, кто действительно поможет вам. – CommonsWare
Я обновил свой вопрос. – erdomester