Ниже приведен пример запроса того, что я пытаюсь сделать, и он выполняет эту работу, но я чувствую, что sub-запросы - это не лучший способ пойти сюда. Любые указатели?Могу ли я оптимизировать этот запрос sql?
SELECT DISTINCT
u.UserID,
(SELECT COUNT(LoginID) FROM Logins WHERE Success = 1 AND UserID = u.UserID) AS Successful,
(SELECT COUNT(LoginID) FROM Logins WHERE Success = 0 AND UserID = u.UserID) AS Unsuccessful,
(SELECT TOP 1 LoginDate FROM Logins WHERE UserID = u.UserID ORDER BY LoginDate DESC) AS LastLogin
FROM
Users u INNER JOIN
Logins l ON u.UserID = l.UserID
BTW приведенный выше пример не выглядит, как он нуждается присоединиться, но в реальном решении сделать, чтобы получить некоторые другие столбцы ...
Можете ли вы опубликовать план выполнения? –
Мне кажется, что вы можете делать все запросы из логинов в одном элементе вместо трех, используя что-то вроде 'sum (if success = 0 then 1 else 0 endif)'? –