У меня есть таблица поло, как это:Оптимизация выберите строки на основе предыдущего выбора результата
product_id |aid |value|
------------|-------|-----|
789 |6 |1 |
789 |6 |3 | -->aid = 6 , value = 3
789 | 8| 8| -->rows that i want with aid 8
789 | 8| 11| -->rows that i want with aid 8
789 | 8| 82| -->rows that i want with aid 8
------------|-------|-----|
790 |6 |2 |
790 |6 |3 | -->aid = 6 , value = 3
790 |6 |4 |
790 | 8| 8| -->rows that i want with aid 8
790 | 8| 16| -->rows that i want with aid 8
------------|-------|-----|
791 |6 |7 |
791 |8 |13 |
------------|-------|-----|
Я хочу все строки с помощью = 8 для конкретных продуктов, которые имеют пару (помощь = 6 и значения = 3) что я сделал: Сначала я выбираю отдельные товарные_имени, имеющие aid = 6
и value = 3
.
Затем я выбираю все строки с помощью, где product_ids находятся в предыдущем запросе select. вот мой запрос, который занимает около 1 секунды.
SELECT DISTINCT `value` FROM `fields`
WHERE aid = 8 AND product_id IN
(
SELECT DISTINCT `fields`.product_id FROM `fields`
WHERE aid = 6 AND `value` = 3
)
результат значение 8,11,82,16
есть более оптимизированный способ сделать это?
Каков объем ваших данных? –
@GordonLinoff ~ 700K строк в полях – osyan
И насколько велика количество совпадающих строк (до отдельных)? –