У меня есть этот запрос, но он занимает слишком много времени, примерно 30 секунд через NaviCat. Как это можно оптимизировать, если это возможно?
SELECT DISTINCT c.clientid, c.name, c.email, c.region
FROM clients c RIGHT JOIN orders o ON c.clientid = o.clientid
WHERE o.order_status = 'pending'
AND c.clientid NOT IN (
SELECT DISTINCT c.clientid
FROM clients c, orders o
WHERE c.clientid = o.clientid AND o.order_status = 'paid'
)
ORDER BY c.id DESC
Чтобы лучше понять, что мне нужно: у меня есть 2 таблицы:
clients (id, clientid, name, email, region)
orders (id, orderid, clientid, order_amount, order_status, ….)
Пример записи:
Client | Order | Status
-----------------------
C1 | O1 | (paid)
C1 | O2 | (pending)
C2 | O3 | (paid)
C3 | O4 | (pending)
C4 | O5 | (paid)
C5 | O6 | (pending)
Мне нужно вернуть только C3
и C5
Большое спасибо за ваши ответы.