powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Просьба помочь ускорить запрос
8 сообщений из 8, страница 1 из 1
Просьба помочь ускорить запрос
    #33954476
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте!

Все было нормально до того как я добавил в JOIN такой запрос:

SELECT product_id, profit_percent FROM calculation_data_for_products b WHERE record_date =
(SELECT max(record_date) FROM calculation_data_for_products WHERE product_id = b.product_id)

И теперь все работает намного медленнее :(

Суть запроса такова:
Выбрать из таблицы calculation_data_for_products самые "свежие" данные для каждого изделия.

Надеюсь что запрос можно оптимизировать по скорости работы.

Спасибо!
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33954510
Igor Kozlov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное я задал вопрос не разобравшись.

Сам вышеприведенный подзапрос довольно быстрый.

Я добавил LEFT к JOIN-ам в основном запросе и он заработал почти в 10(!) раз быстрее.

Кто может пояснить - почему?

Спасибо!
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33954570
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так:
SELECT DISTINCT ON (product_id) product_id, profit_percent
FROM calculation_data_for_products b
ORDER BY product_id,record_date desc
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33954584
domanix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понятен вопрос- куда добавил - join - какой join - и почему мы должны гадать почему у тебя быстрее или медленнее. Мало информации чтобы делать выводы.. Нужно - колличество данных - распределение по группам ( продуктам) наличие индексов. и наконец- куда добавил join? :-)
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33954899
alex_sm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
SELECT A.product_id, A.profit_percent, B.record_date
FROM calculation_data_for_products A
INNER JOIN
(SELECT product_id, max(record_date) as record_date
FROM calculation_data_for_products
GROUP BY product_id) B
ON A.product_id = B.product_id
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33955467
Andrew Sagulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А если сделать так:
Код: plaintext
1.
2.
3.
4.
SELECT A.product_id, A.profit_percent, A.record_date
FROM calculation_data_for_products A
WHERE A.record_date =  (SELECT max(record_date) FROM calculation_data_for_products B 
  WHERE A.product_id = B.product_id)
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33955521
Andrew Sagulin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения: ответил на предложение alex_sm, и не глянул, что автор вопроса не он. [Пошёл рвать на себе волосы за невнимательность].
Глянуть бы полный текст запроса и explain select для него...
...
Рейтинг: 0 / 0
Просьба помочь ускорить запрос
    #33957436
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Igor Kozlovон заработал почти в 10(!) раз быстрее. Кто может пояснить - почему?Для этого надо смотреть планы выполнения запросов с помощью команды EXPLAIN.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Просьба помочь ускорить запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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