Я написал запрос, но боюсь, что он может быть неоптимизирован, и у меня возникнет проблема.
Задание: Найти пользователей, у которых нет долгов, и их последний платеж был старше 2года.Ненужные пользователи, у которых не было заказов
У нас есть две таблицы:
User tbl (Id (int), LastName (string))
Order tbl (Id (int), UserId (int), IsPaid (bool), DatePaid (Date, not null))
Я написал запрос на Sql, но боюсь, что я не в состоянии20 тыс. Пользователей и много заказов
Я нашел всех, у кого нет долгов, и последний платеж за двухлетний период.Теперь я хочу удалить их из общего списка, и поэтому пользователи, которые нуждаются во мне, остаются.
Кажется, это плохая идея
SELECT u."Id"
FROM "User" AS u
LEFT JOIN
(SELECT *
FROM "Order"
WHERE "UserId" IN
(SELECT "Id"
FROM "User"
WHERE "Id" NOT IN
(SELECT DISTINCT "UserId"
FROM "Order"
WHERE "IsPaid" IS FALSE )
)
AND "DatePaid" > '2016-10-10'
) AS p
ON p."UserId" = u."Id";