У меня следующие 2 запросов. Первый находит некоторые product_id
s на основе некоторых объединений. Он работает быстро.Объединить 2 MySQL запросов для повышения производительности
SELECT Group_concat(DISTINCT(p.products_id)) AS comma_separated
FROM products p
left join specials s
ON p.products_id = s.products_id
left join products_to_categories p2c
ON p.products_id = p2c.products_id
left join products_description pd
ON p.products_id = pd.products_id
inner join products_attributes pa
ON p.products_id = pa.products_id
WHERE p.products_status = '1'
AND Date_sub(Curdate(), interval 7000 day) <= p.products_date_added
ORDER BY p.products_id DESC
После этого, следующий запрос выполняется, и использовать все products_id
S найдено в первом запросе:
SELECT DISTINCT pov.products_options_values_id,
pov.products_options_values_name,
pa.options_values_price,
pa.price_prefix
FROM products_attributes pa,
products_options_values pov
WHERE Find_in_set(pa.products_id,
'**Long list of comma separated products_ids found in the first query**')
AND pa.options_id = 1
AND pa.options_values_id = pov.products_options_values_id
AND pov.language_id = '1'
GROUP BY pov.products_options_values_id
ORDER BY pov.products_options_values_sort_order ASC
Список products_id
с в пункте Find_in_set
очень долго и делает этот запрос занять довольно много времени.
Есть ли способ использования объединений или другого способа переписать второй запрос или объединить оба для повышения производительности?
Я думаю, вы должны изменить свой вопрос и объяснить, что вы пытаетесь сделать, а также иметь образцы данных и желаемые результаты. –
Хотя первый запрос можно использовать в качестве подзапроса во втором ('... WHERE Find_in_set (pa.products_id, SELECT Group_concat (DISTINCT (p.products_id)) AS comma_sepa ...ions_values_sort_order ASC)) .. .), но очень сложно сказать, какой эффект он будет оказывать на производительность. – Piskvor
Спасибо @ GordonLinoff, я думаю, что запросы довольно просты и понятны, и вопрос совершенно ясен. Ответ mnv ниже прибил его, теперь он занимает менее 5% времени, затраченного до этого: – CreativeMind