У меня есть следующая схема
ЗАКАЗЧИК (CID INTEGER NOT NULL, ИМЯ VARCHAR (30), АДРЕС VARCHAR (50))
PRODUCT (PID INTEGER NOT NULL, ИМЯ VARCHAR (50), ЦЕНА (10,2))
ПРОДАЖА (SID BIGINT NOT NULL, СТАТУС VARCHAR (10), CID INTEGER, ПОЛНАЯ ЦЕНА (30,2))
ПРОДАЖА ПРОДУКТА (SID BIGINT NOT NULL, PID INTEGER NOT NULL, ЕДИНИЦЫ INTEGER, ПОСЛЕДУЮЩАЯ ДЕСЯТИЧНАЯ (30,2))
У меня сейчас есть такое утверждение:
SELECT
P.NAME, COUNT(DISTINCT C.CID) AS NUM_CUSTOMERS
FROM
CUSTOMER AS C, PRODUCT AS P, PRODUCTSALE AS PS, SALE AS S
WHERE
C.CID = S.CID
AND S.SID = PS.SID
AND PS.PID = P.PID
GROUP BY
P.NAME
ORDER BY
NUM_CUSTOMERS DESC
Я думаю, что это создает кросс-произведение из четырех таблиц (P, S, PS, C)? Могу ли я оптимизировать это с помощью природы join на четырех из них? Как еще можно оптимизировать это утверждение?