powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Странный запрос и зависание
10 сообщений из 10, страница 1 из 1
Странный запрос и зависание
    #39740798
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Один из модулей сайта регулярно вызывает запрос, основную часть которого тут привожу:

SELECT DISTINCT p.product_id FROM oc_product p , oc_product_special p2s

Запрос вызывает зависание mysql минут на 10

в oc_product_special 458к записей
в oc_product 54к записей

в oc_product_special нет product_id которых не было бы в oc_product.

В чем может быть дело?
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39740864
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslavaoc_product p , oc_product_special p2sещё бы не зависал...
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39740935
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslavaВ чем может быть дело?
В "программисте", который написал cartesian join.
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39740967
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslavaосновную часть которого тут привожуПриведите его ПОЛНОСТЬЮ. Потому как грамотно сократить Вам, как мне кажется, пока не под силу...
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39741051
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akinatdslavaосновную часть которого тут привожуПриведите его ПОЛНОСТЬЮ. Потому как грамотно сократить Вам, как мне кажется, пока не под силу...

Все так. Даже автор умывает руки, заявляя что у других все работает. Готов заплатить за фикс

SELECT DISTINCT p.product_id FROM oc_product p , oc_product_special p2s WHERE 1 AND p.price >= 1 AND p.product_id IN(SELECT DISTINCT ps.product_id FROM oc_product_special ps WHERE special_source = '1С' AND date_start < NOW() AND date_end > NOW())
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39741079
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT p.product_id 
FROM oc_product p , oc_product_special ps 
WHERE ps.special_source = '1С' 
  AND ps.date_start < NOW() 
  AND ps.date_end > NOW()
  AND p.product_id = ps.product_id
  AND p.price >= 1 



tdslavaДаже автор умывает руки, заявляя что у других все работает.
Если это штатный программист - не подпускайте его к SQL, пока не научится писать хотя бы простейшие запросы.
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39741129
tdslava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT DISTINCT p.product_id 
FROM oc_product p , oc_product_special ps 
WHERE ps.special_source = '1С' 
  AND ps.date_start < NOW() 
  AND ps.date_end > NOW()
  AND p.product_id = ps.product_id
  AND p.price >= 1 



tdslavaДаже автор умывает руки, заявляя что у других все работает.
Если это штатный программист - не подпускайте его к SQL, пока не научится писать хотя бы простейшие запросы.

увы, не все так просто. Нашел где это формируется, это php конструкция формирующая запрос из переданных параметров.
Будет сложно привести к простому виду
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39741140
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslavaэто php конструкция формирующая запрос из переданных параметров.
Будет сложно привести к простому видуДа ладно!
Вот базовый шаблон:
Код: sql
1.
2.
3.
SELECT DISTINCT p.product_id 
FROM oc_product p , oc_product_special ps 
WHERE p.product_id = ps.product_id


а вот программно добавляемый "довесок" (на основании переданных параметров)
Код: sql
1.
2.
3.
4.
  AND ps.special_source = '1С' 
  AND ps.date_start < NOW() 
  AND ps.date_end > NOW()
  AND p.price >= 1 


Возможно, часть условий, помещённых мной в "довесок", на самом деле должны быть в шаблоне... но это уж сами смотрите по логике.

А вот подзапрос в условиях отбора - это однозначно косяк. Ничем не оправдываемый. Как, впрочем, и отсутствие условий отбора по картезианке.
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39741861
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tdslavaОдин из модулей сайта регулярно вызывает запрос, основную часть которого тут привожу:

SELECT DISTINCT p.product_id FROM oc_product p , oc_product_special p2s

Запрос вызывает зависание mysql минут на 10

в oc_product_special 458к записей
в oc_product 54к записей

в oc_product_special нет product_id которых не было бы в oc_product.

В чем может быть дело?

В запросе.
Выделить уникальные product_id из таблицы в почти полмиллиона записей -- это непросто.
...
Рейтинг: 0 / 0
Странный запрос и зависание
    #39741869
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivиз таблицы в почти полмиллиона записей
Чутка поболе... 458к*54к - это 25 миллиардов...
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Странный запрос и зависание
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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