У меня есть 2 больших стола, product и product_variants. В настоящее время я использую представление MySQL, поэтому мне нужно это SQL-заявление много раз. Структура базы данных не может быть изменена atm.MySQL Union in View
Продукт:
ID | IsMaster | EAN | Имя | Цена ...
Product_Variants:
ID | PID (FK на Product.ID) | IsMaster | EAN | Имя | Цена ...
Вид my_view
содержит отборное, как это:
(SELECT * FROM `product`) UNION (SELECT * FROM `product_variants`)
Когда я сейчас делаю запрос, как это:
SELECT * FROM my_view WHERE EAN = '11110'
Это занимает около 0,5 до 1 секунда. Если я хотел бы использовать содержание зрения непосредственно путем добавления where
для каждого подзапроса, это супер быстрый (~ 0004 сек):
(SELECT * FROM `product` WHERE EAN = '11110') UNION (SELECT * FROM `product_variants` WHERE EAN = '11110')
Как я могу использовать более быстрый метод в представлении? Мне нужно перейти на функцию MySQL?
ТИА Matt
Можете ли вы получить данные как больше столбцов (объединение), а не больше строк (объединение)? – Bohemian