0
У меня есть этот запрос, которые работают на MS SQL Server:Как оптимизировать SQL запрос
SELECT o.phone AS Number, o.code AS Code, o.name AS Name,
o.expireDate AS ExpireDate, o.disabled AS cardStatus, a.disabled AS AccountStatus,
MAX(j.cDate) AS LastUse
FROM [DATAB].[dbo].[Card] AS o
LEFT OUTER JOIN [DATAB].[dbo].[journal] AS j
ON j.phone = o.phone,
[DATAB].[dbo].[CardType] AS ct, [DATAB].[dbo].[Account] AS a,
[DATAB].[dbo].[CardProduct] AS cp
WHERE o.accountProductId = ct.id
AND ct.accountId = a .id
AND a.number = 'XXXXXXXXXX'
AND ct.partnerProductId = cp.id
AND cp.code = 'XXXX'
GROUP BY o.phone, o.code, o.disabled, o.name, o.expireDate, a.disabled
ORDER BY o.name ASC;
Я хотел бы, чтобы оптимизировать его для того, чтобы работать быстрее, но не как начать.
FYI, я проверил оценочный план выполнения, анализ индекса DATAB]. [Dbo]. [Журнал] говорит, что он стоит 70% от запроса, но сообщение об ошибке отсутствует.
Прежде всего, изменить ваш код, чтобы присоединиться к собственно заявления. Добавьте индексы к внешним ключам. Попробуйте добавить индекс в 'a.number' и' cp.code'. –
Вам нужно левое соединение или вам нужны только телефоны, которые появляются в журнале dbo.Journal? – TJB
Giorgi: Я проверил с индексом, который вы мне сказали, но результат тот же, я получаю 1400 строк за 5 секунд. TJB: Я хочу последний MAX (cDate) из dbo.Journal –