Я не эксперт по базам данных, но у меня достаточно знаний, чтобы попасть в неприятности, как это имеет место здесь. Этот запросПочему этот postgresql-запрос настолько медленный?
SELECT DISTINCT p.*
FROM points p, areas a, contacts c
WHERE ( p.latitude > 43.6511659465
AND p.latitude < 43.6711659465
AND p.longitude > -79.4677941889
AND p.longitude < -79.4477941889)
AND p.resource_type = 'Contact'
AND c.user_id = 6
чрезвычайно медленный. Таблица точек имеет менее 2000 записей, но для выполнения требуется около 8 секунд. Существуют индексы столбцов широты и долготы. Удаление предложения, описывающего resource_type и user_id, не имеет значения.
Поля широты и долготы отформатированы как число (15,10). Для некоторых вычислений мне нужна точность.
В этом проекте есть много и много других запросов, где сравниваются точки, но нет проблем времени выполнения. Что происходит?
Пожалуйста ВЫВЕШУ EXPLAIN. Различие часто является проблемой производительности. Кроме того, убедитесь, что широта и долгота индексируются. –