powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос Update долго....
5 сообщений из 5, страница 1 из 1
Запрос Update долго....
    #39272168
sql111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Может у кого есть идея.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
UPDATE Tovar
Tovar
LEFT JOIN (
SELECT * FROM Tovar WHERE Tovar.dozirovka IS NOT NULL
) tmp
ON Tovar.md5Drug = tmp.md5Drug
AND Tovar.idCountry = tmp.idCountry
AND Tovar.idForma = tmp.idForma
AND Tovar.idManufacturer = tmp.idManufacturer
AND Tovar.dozirovka IS NULL 
SET Tovar.dozirovka = tmp.dozirovka


Индексы отдельные по всем полям, но как-то очень странно медленно работает все это дело. 30 сек
...
Рейтинг: 0 / 0
Запрос Update долго....
    #39272224
bochkov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На первый взгляд использование вложенного запроса избыточно
...
Рейтинг: 0 / 0
Запрос Update долго....
    #39272252
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и зачем апдейтить всё, если смысл запроса, похоже, в том, чтобы обработать только нуллы?
...
Рейтинг: 0 / 0
Запрос Update долго....
    #39272253
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А хотя нет, он же так и работает... тогда да, надо избавиться от вложенного запроса.
...
Рейтинг: 0 / 0
Запрос Update долго....
    #39272502
sql111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
одно из решений такое (0.3 sec):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
UPDATE Tovar
Tovar INNER JOIN
(SELECT Tovar.* FROM (SELECT * FROM Tovar T
WHERE T.dozirovka IS NULL
AND EXISTS (SELECT 1 FROM Tovar T2 WHERE T2.md5Drug = T.md5Drug AND T2.dozirovka IS NOT NULL
AND T2.idCountry = T.idCountry
AND T2.idForma = T.idForma
AND T2.idManufacturer = T.idManufacturer
AND T2.id<>T.id
)) as tmp
INNER JOIN Tovar
ON Tovar.md5Drug = tmp.md5Drug
AND Tovar.idCountry = tmp.idCountry
AND Tovar.idForma = tmp.idForma
AND Tovar.idManufacturer = tmp.idManufacturer
WHERE Tovar.dozirovka IS NOT NULL
GROUP BY Tovar.md5Drug,Tovar.dozirovka
ORDER BY NULL) tmpS
ON  Tovar.md5Drug = tmpS.md5Drug
AND Tovar.idCountry = tmpS.idCountry
AND Tovar.idForma = tmpS.idForma
AND Tovar.idManufacturer = tmpS.idManufacturer
AND Tovar.dozirovka IS NULL
SET Tovar.dozirovka = tmpS.dozirovka
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос Update долго....
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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