powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос - оптимизиция
7 сообщений из 7, страница 1 из 1
Сложный запрос - оптимизиция
    #38335589
V2oD2o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть запрос (Выборка ВСЕХ модификаций и моделей шин):
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT `vendor`.`vendor_name`,
	`model`.`model_name`,
	`model_size`.`size_id`,
	`model_size`.`size_width`,
	`model_size`.`size_radius`,
	`model_size`.`size_profile`
 FROM `model_size` 
	INNER JOIN `model` ON `model_size`.`model_id`=`model`.`model_id`
	INNER JOIN `vendor` ON `model`.`vendor_id`=`vendor`.`vendor_id`";



их примерно 60000шт

далее надо по найденным параметрам найти цену в прайсе и записать уникальный номер size_id в прайс лист для последующего быстрого поиска цены:
Код: sql
1.
2.
3.
4.
5.
6.
UPDATE `price_tyres` SET `size_id`='".$row['size_id']."' 
	WHERE `vendor`='".$row['vendor_name']."' 
	AND `width`='".$row['size_width']."'
	AND `radius`='".$row['size_radius']."'
	AND `profile`='".$row['size_profile']."'
	AND `fullname` LIKE '%".$row['model_name']."%'";



это выполняется в цикле в php, лимит по времени 60с, за это время обрабатывается всего 1900-2100 строк

помогите написать запрос объединяющий эти 2 запроса в один, что то вроде UPDATE `table` SET `a`=(SELECT FROM WHERE) WHERE `b`=`table`.`b` AND `c`=`table`.`c`....

или как это оптимизировать?
...
Рейтинг: 0 / 0
Сложный запрос - оптимизиция
    #38335614
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
см. в доке синтаксис UPDATE последний или предпоследний пример.
...
Рейтинг: 0 / 0
Сложный запрос - оптимизиция
    #38335661
V2oD2o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, Спасибо! верно носом ткнул

UPDATE table1 t1
JOIN table2 t2 ON t1.field1 = t2.field1
JOIN table3 t3 ON (t3.field1=t2.field2 AND t3.field3 IS NOT NULL)
SET t1.field9=t3.field9
WHERE t1.field5=1
AND t1.field9 IS NULL

буду пробовать
...
Рейтинг: 0 / 0
Сложный запрос - оптимизиция
    #38335797
V2oD2o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
чего то не получается у меня..

получилось что то вроде этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
UPDATE `price_tyres` 
INNER JOIN `model_size` ON (
`model_size`.`size_width`=`price_tyres`.`width`
AND `model_size`.`size_profile`=`price_tyres`.`profile`
AND `model_size`.`size_radius`=`price_tyres`.`radius`
)
INNER JOIN `model` ON `model`.`model_id`=`model_size`.`model_id`
INNER JOIN `vendor` ON `vendor`.`vendor_id`=`model`.`vendor_id`
SET `price_tyres`.`size_id`=`model_size`.`size_id`
WHERE `model`.`model_name` LIKE '%`price_tyres`.`fullname`%' AND `vendor`.`vendor_name`=`price_tyres`.`vendor`;
...
Рейтинг: 0 / 0
Сложный запрос - оптимизиция
    #38335799
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
V2oD2o,

опишите задачу словами.
я, например, толком не понял, что именно вы хотите сделать.
...
Рейтинг: 0 / 0
Сложный запрос - оптимизиция
    #38335819
V2oD2o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть данные о продукте в 4х таблицах
1 - бренд
2 - модель
3 - параметры
4 - цена

у №3 и №4 есть поле size_id - оно уникальное для каждой позиции в таблице №3 (основная БД)

надо сделать следующее:
пройтись по всем позициям в таблице №3 (зацепив данные из №1 и №2) - найти цену в №4 и обновить №4 по полю `№4`.`size_id`=`№3`.`size_id` - для быстрого поиска цены

т.е. в последующем для получения цены нужно будет только SELECT `cost` FROM `table` WHERE `size_id`='12345', а не по всей куче параметров искать цену в прайсе

как то так..
...
Рейтинг: 0 / 0
Сложный запрос - оптимизиция
    #38335826
V2oD2o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вложение, примеры всех таблиц
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный запрос - оптимизиция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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