Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
#1

SQLite. Жутко тормозит Cursor - Программирование Android

02.01.2014, 13:47. Просмотров 883. Ответов 7
Метки нет (Все метки)

Выполняю запрос к бд с большими объемами данных, связывая левым соединением несколько таблиц.
Выяснил, что запрос выполняется быстро, а тормозит курсор.
В выборке может и не быть строк, но первое обращение к курсору (cursor.getCount() или cursor.moveToNext) занимает 900 мсек!
В чем причина и что можно сделать?

Добавлено через 47 минут
А может на самом деле запрос выполняется не в момент вызова "cursor = database.rawQuery()", а при обращении к полученному курсору?
Тогда объясняется подозрительно быстрое получение курсора и затем долгое обращение к нему.

Добавлено через 13 часов 20 минут
Так и есть.
Добавил индекс по одному из полей, участвующих в соединении и скорость многократно увеличилась.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.01.2014, 13:47     SQLite. Жутко тормозит Cursor
Посмотрите здесь:

Cursor - Программирование Android
Пытаюсь курсором передать данные, но что то ему не нравится Вот так передаю public class GetNewsDB { DB db; RemindDTO...

Cursor - Программирование Android
Подскажите как быть дальше. Есть БД, к ней прикрутил курсор DB db; @Override protected void onCreate(Bundle...

RawQuery using cursor - Программирование Android
Здравствуйте. Я сформировал запрос в БД : Cursor cursor2 = db.rawQuery("SELECT catname4 FROM contact_table WHERE catname2='Riko'...

ArraList or Cursor - Программирование Android
Вечер добрый. есть быстрый метод поиска, такого элемента, в ArrayList или Cursor, которого там нет начиная с 0 поиск и ++

Получение данных из cursor - Программирование Android
У меня огромный вопрос по работе с SQLite, а именно Cursor. В общем то при запросе к бд все норм, при создании класса бд все норм, везде...

Рэндомно забрать из cursor - Программирование Android
Доброго времени! Мне нужно рэндомно забрать из cursor слово и заполнить буквами из него button на TableLayout т.е. каждую букву на новую...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
03.01.2014, 19:07     SQLite. Жутко тормозит Cursor #2
Код в студию. Всмысле нужен код для того чтобы как-то помочь.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
03.01.2014, 22:46  [ТС]     SQLite. Жутко тормозит Cursor #3
Цитата Сообщение от VEINHORN Посмотреть сообщение
Код в студию. Всмысле нужен код для того чтобы как-то помочь.
Да вроде бы и вопросов больше нет.
Я пришел к выводу, что в реальности запрос выполняется не при получении курсора, а при первом обращении к данным, которые должны быть получены запросом (по крайней мере других мыслей нет).
До этого долго не мог понять в чем дело, т.к. искал причину тормозов не в том месте, поэтому сначала и не добавлял индексы.
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
03.01.2014, 22:56     SQLite. Жутко тормозит Cursor #4
Slon747, запрос выполняется при вызове метода rawQuery()
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
04.01.2014, 17:53  [ТС]     SQLite. Жутко тормозит Cursor #5
Цитата Сообщение от VEINHORN Посмотреть сообщение
Slon747, запрос выполняется при вызове метода rawQuery()
Android 4.1.1
Вот вернул назад замер производительности и удалил индексы:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
String query = "SELECT ...";
 
//время до выполнения запроса
long time1 = currentTimeMillis();
 
Cursor cursor = database.rawQuery(query, null);
 
//время после выполнения запроса
long time2 = currentTimeMillis();
 
int countRows = cursor.getCount();
 
//время после получения кол-ва возращаемых запросом строк
long time3 = currentTimeMillis();
 
//вывод результатов производительности на экран
Toast.makeText(this, "1: " + (time2 - time1) + "\n2: " + (time3 - time2), Toast.LENGTH_LONG).show();
При выполнении запроса на устройстве получаю от Toast:
1: 1
2: 1043


То-же самое, если просто перебирать полученные записи (записей в результате может быть от 0 до нескольких).
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
04.01.2014, 18:58     SQLite. Жутко тормозит Cursor #6
Slon747, чтобы сказать наверняка надо смотреть исходники.
Slon747
59 / 37 / 1
Регистрация: 24.08.2013
Сообщений: 422
04.01.2014, 19:10  [ТС]     SQLite. Жутко тормозит Cursor #7
Цитата Сообщение от VEINHORN Посмотреть сообщение
Slon747, чтобы сказать наверняка надо смотреть исходники.
Исходники чего?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2014, 19:28     SQLite. Жутко тормозит Cursor
Еще ссылки по теме:

Заполнить RecyclerView из Cursor - Программирование Android
Ребят подскажите плз, есть ли способы закинуть данные с бд типа Cursor в список ResyclerView? Или нужно обязательно переводить данные в...

Footer(ProgressBar) in recyclerview + cursor - Программирование Android
Доброго времени суток. Подскажите самый адекватный способ добавить progressbar внизу списка recyclerview. Данные получаю из ...

Cursor c = db.rawQuery - выдает ошибку - Программирование Android
Есть таблица с датами, и есть SQL условие для получения даты. Если я в условие указываю дату которая есть в таблице код отрабатывает без...

Как обновить Recycle View после добавления нового элемента в БД? Используется Cursor - Программирование Android
Проблема такова, после добавления элемента в БД, список элементов Recycle View не обновляется, приходится заново пересоздавать фрагмент, а...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
VEINHORN
543 / 92 / 22
Регистрация: 16.12.2011
Сообщений: 317
04.01.2014, 19:28     SQLite. Жутко тормозит Cursor #8
Slon747, исходники Android.
Yandex
Объявления
04.01.2014, 19:28     SQLite. Жутко тормозит Cursor
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru