Мой вопрос, есть ли более быстрый путь к следующему запросу?
Я использую ORACLE 10g
Допустим, у меня есть таблица «Производитель» и «Автомобиль», и я хочу подсчитать все вхождения столбца «Car.Name». Вот как бы я это сделал:
SELECT manuf.Name, COUNT(car1.Name), COUNT(car2.Name), COUNT(car3.Name)
FROM Manufacturer manuf
LEFT JOIN (SELECT * FROM Car c where c.Name = 'Ferrari1') car1 ON manuf.PK = car1.ManufPK
LEFT JOIN (SELECT * FROM Car c where c.Name = 'Ferrari2') car2 ON manuf.PK = car2.ManufPK
LEFT JOIN (SELECT * FROM Car c where c.Name = 'Ferrari3') car3 ON manuf.PK = car3.ManufPK
GROUP BY manuf.Name
Требуются результаты:
Manufacturer | Ferrari1 | Ferrari2 | Ferrari3
----------------------------------------------
Fiat | 1 | 0 | 5
Ford | 2 | 3 | 0
Я пробовал это с несколькими левыми соединениями, и это работало нормально. Но когда я добавил много (например, 90+), это было очень медленно (более 1 минуты).
Мой вопрос, есть ли более быстрый способ сделать этот запрос?