У меня есть следующий запрос, который находит клиентов, связанных с заказом. У меня есть унаследованные ID на клиенте, поэтому я должен проверить старый идентификатор (унаследованный) и идентификатор клиента, следовательно, или заявленияИЛИ в выражении WHERE замедление вниз резко
SELECT
c.Title,
c.Name
FROM productOrder po
INNER JOIN Employee e ON po.BookedBy = e.ID
CROSS APPLY (
SELECT TOP 1 *
FROM Customer c
WHERE(po.CustID = c.OldID OR po.CustID = c.CustID)
) c
GROUP BY
c.CustomerId, c.Title, c.FirstName, c.LastName
если я удалить OR
заявления он работает отлично подходит для обоего ситуаций. Существует индекс идентификатора клиента и его наследия.
У вас есть отдельные индексы на 'customer.oldid' и' customer.custid'? – mvp
Нет, у меня есть кластеризованный индекс –
Почему бы не обновить 'productOrder' и заменить старый id: s соответствующим новым id: s? Предполагая, что старый id: s также уникален в 'customer', который должен быть легким ... Что мне не хватает? – user1429080