Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как максимально оптимизировать запрос / 5 сообщений из 5, страница 1 из 1
24.06.2008, 13:10
    #35390660
Anthonys
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально оптимизировать запрос
У меня стоит задача сформировать огромный отчет. В нем в принципе одни и те же запросы, но из-за того что все-таки они немного отличаются по полям " hst.closingstatus='CloseContact' ", " hst.additionalstatus = 'Not interested' " и " prst.id_agent = '9' " приходится вызывать его около 350 раз за отчет, а если еще и период выборки сделать побольше, то и вообще чай можно уходить пить. Каждый запрос работает в среднем 60-70 млсек. Что в нем возможно поменять для оптимизации, кроме меня разумеется:)?

Код: plaintext
1.
2.
3.
4.
5.
SELECT hst.closingstatus AS status, hst.additionalstatus AS addstatus, count(hst.id_history) AS cnt 
 FROM history hst INNER JOIN prospects prst ON prst.id_prospect = hst.id_prospect
 WHERE prst.id_agent = '9' AND hst.closingstatus='CloseContact' 
 AND hst.additionalstatus = 'Not interested' 
 AND hst.contactdate BETWEEN '2008-06-24 00:00' AND '2008-06-24 00:00' GROUP BY closingstatus, additionalstatustus
PS: Все необходимые поля я уже проиндексировал, до этого еще дольше было.
...
Рейтинг: 0 / 0
24.06.2008, 13:28
    #35390744
Бабичев Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально оптимизировать запрос
Честно говоря, я так и не понял, почему запрос нужно дергать 350 раз...
...
Рейтинг: 0 / 0
24.06.2008, 13:51
    #35390820
Anthonys
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально оптимизировать запрос
Возможно и не нужно. В этом и проблема - я пока не могу найти более оптимизированный путь.
Дергать приходится потому что этот запрос находится в цикле, где меняются
"hst.closingstatus='CloseContact'", " hst.additionalstatus = 'Not interested' " и "prst.id_agent = '9'"
Если вы мне подскажите как избежать цикла и пользоваться только посредством постгреса, буду очень благодарен.

Мне бы хотя бы просто саму идею. Остальное в книжках и форумах найду.
...
Рейтинг: 0 / 0
24.06.2008, 13:55
    #35390837
Anthonys
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально оптимизировать запрос
AnthonysВозможно и не нужно. В этом и проблема - я пока не могу найти более оптимизированный путь.
Дергать приходится потому что этот запрос находится в цикле, где меняются
"hst.closingstatus='CloseContact'", " hst.additionalstatus = 'Not interested' " и "prst.id_agent = '9'"
Если вы мне подскажите как избежать цикла и пользоваться только посредством постгреса, буду очень благодарен.

Мне бы хотя бы просто саму идею. Остальное в книжках и форумах найду.

Добавлю.
Данные параметры меняются в запросе описанном выше.
Так же нужно обращаться и в другие таблицы в других запросах, но находящимся в этом же цикле. Но между собой эти запросы никак не связаны. Только одним параметром prst.id_agent
...
Рейтинг: 0 / 0
24.06.2008, 15:47
    #35391233
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как максимально оптимизировать запрос
получить всю информацию одним запросом

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SELECT
  prst.id_agent,
  hst.closingstatus AS status,
  hst.additionalstatus AS addstatus,
  count(hst.id_history) AS cnt 
FROM
  history hst INNER JOIN prospects prst ON prst.id_prospect = hst.id_prospect
WHERE
  hst.contactdate BETWEEN '2008-06-24 00:00' AND '2008-06-24 00:00'
GROUP BY
  prst.id_agent,
  hst.closingstatus,
  hst.additionalstatus
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Как максимально оптимизировать запрос / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]