Я занимаюсь разработкой приложения, которое берет необработанные данные о транзите и отображает расписание предстоящих поездов.Я использую следующий запрос для получения списка станций (из таблицы, содержащей приблизительно 50 000 записей для времени остановки):
SELECT DISTINCT SUBSTR(stops._id, 0, LENGTH(stops._id)) as _id, stops.stop_name
FROM trips, stop_times, stops
WHERE trips._id = 'B'
AND trips.trip_id = stop_times._id
AND stop_times.stop_id = stops._id
Я запустил этот запрос в браузере SQLite, и он был выполнен примерно за 0,8 секунды.Но когда я выполняю его в своем классе DatabaseHelper с помощью rawQuery (), на моем физическом устройстве это занимает более 5 минут.Я добавил несколько операторов регистрации, чтобы увидеть, где происходило замедление, и оказалось, что это сам запрос, который занимает много времени, а не инфляция представления.Когда я выполняю тот же запрос без опции DISTINCT, он выполняется примерно за 1 секунду.
Я мог понять, что библиотека Android работает немного дольше, чем браузер, но она не должна быть в несколько сотен раз медленнее.Есть ли что-то в опции DISTINCT, которая вызывает это?