SELECT question_id FROM test_answers WHERE user_id = 325682 AND started > 0 GROUPBY question_id
) q_answers ON question_id=id
WHERE
Q.type IN('Q-PS-AR','Q-DS-ST','Q-PS-WP')
AND
question_id ISNULL
AND
weight >= 0
AND
weight <= 60
GROUPBY`type`
Для второго вашего и моего запроса можно попробовать сделать индекс по type & weight
----- PostgreSQL DBA
esterio
Отправлено: 25 Апреля, 2013 - 20:06:57
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
Спасибо. Уже разобрался. На таблице в 1000 строк разница практически отсутствует. http://stackoverflow[dot]com/questio[dot][dot][dot]ization-in-vs-or
здесь расписали кстати. В даном случае IN не использовал индекс, что и не позволило ускорить запрос существенно. Почему так не знаю
EuGen
Отправлено: 25 Апреля, 2013 - 21:30:20
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Помог: 707 раз(а)
esterio пишет:
Почему так не знаю
Такое может быть, если оптимизатор посчитал селективность ключа недостаточной, чтобы его использовать. В ряде случаев, тем не менее, он ошибается и можно попробовать указать USE INDEX, чтобы изменить план запроса вручную.
----- Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
esterio
Отправлено: 25 Апреля, 2013 - 21:43:02
Активный участник
Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012 Откуда: Украина, Львов
Помог: 127 раз(а)
EuGen пишет:
можно попробовать указать USE INDEX, чтобы изменить план запроса вручную
Буду блгодарен если кинете силку или покажите маленкий пример использования
EuGen
Отправлено: 25 Апреля, 2013 - 21:52:58
Профессионал
Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007 Откуда: Berlin
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.