SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 28.09.2018 11:02:33

biryukovm
Участник
Зарегистрирован: 27.04.2017
Сообщений: 19

Как правильно аптимизировать запрос

Примет всем


У меня есть таблица для списка цен которые я принимаю с 1с, каждая новая цена записывается в бд для архива :
id [AUTO_INCREMENT] {int}
id_1c [индекс]{varchar}
fl_obrabotka_1c [индекс]{int}
key_product [индекс]{varchar}
tip_db [индекс]{varchar}
name {text}
data_file {datetime}

tip_db -  Это типа базы 1с (там загрузка идет с 2 разных 1с )
key_product - список ключей продуктов (штрихкод)



Проблема такая что при обработке запрос тратит много времени.

У меня есть такой вот запрос в нем делаю уникальный список и потом заново прохожусь в бд что получить финальную цену и количество на этот запрос у меня уходит 30-40 сикунд:

SELECT x1.tip_db,x1.id_1c,x1.fl_obrabotka_1c,x1.key_product,x1.name,
(SELECT price FROM tovar_product_price_1c WHERE x1.key_product=key_product and x1.tip_db=tip_db ORDER BY id DESC LIMIT 1) as price,
(SELECT count FROM tovar_product_price_1c WHERE x1.key_product=key_product and x1.tip_db=tip_db ORDER BY id DESC LIMIT 1) as count
FROM tovar_product_1c AS x1
GROUP BY CONCAT(x1.tip_db,x1.key_product)



Если я делаю запрос вот так то занимает меньше сикунды.
SELECT x1.tip_db,x1.id_1c,x1.fl_obrabotka_1c,x1.key_product,x1.name
FROM tovar_product_1c AS x1
GROUP BY CONCAT(x1.tip_db,x1.key_product)



Подскажите как аптемизировать запрос или как в запросе сразу вытащить финальнуюцену и количество.

Неактивен

 

#2 29.09.2018 22:59:08

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Как правильно аптимизировать запрос

покажите структуру в виде
show create table tovar_product_price_1c;

и приведите тестовый набор данных в десяток строк и желаемый результат на этих данных

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson