SQL 쿼리가 매우 느리게 실행되고 있습니다. 실행 계획을 살펴본 결과 Files.OrderId가 가장 비용이 많이 드는 작업 (53 %)이라고 주장합니다. OrderId가 어디에서라도 주문하지 않으면 왜 이런 일이 일어날까요? File.OrderId에 색인을 만드는 것이 최선의 방법입니까?내 실행 계획에 정렬이 나타나는 이유는 무엇입니까?
Execution plan 누구든지 관심이 있다면.
with custOrders as
(
SELECT c.firstName + ' ' + c.lastname as Customer, c.PartnerId , c.CustomerId,o.OrderId,o.CreateDate, c.IsPrimary
FROM Customers c
LEFT JOIN CustomerRelationships as cr
ON c.CustomerId = cr.PrimaryCustomerId
INNER JOIN Orders as o
ON c.customerid = o.customerid
OR (cr.secondarycustomerid IS NOT NULL AND o.customerid = cr.secondarycustomerid)
where c.createdate >= @FromDate + ' 00:00'
AND c.createdate <= @ToDate + ' 23:59'
),
temp as
(
SELECT Row_number()
OVER (
ORDER BY c.createdate DESC) AS 'row_number',
c.customerid as customerId,
c.partnerid as partnerId,
c.Customer,
c.orderid as OrderId,
c.createdate as CreateDate,
Count(f.orderid) AS FileCount,
dbo.Getparentcustomerid(c.isprimary, c.customerid) AS ParentCustomerId,
au.firstname + ' ' + au.lastname AS Admin,
'' as blank,
0 as zero
FROM custOrders c
INNER JOIN files f
ON c.orderid = f.orderid
INNER JOIN admincustomers ac
ON c.customerid = ac.customerid
INNER JOIN adminusers au
ON ac.adminuserid = au.id
INNER JOIN filestatuses s
ON f.statusid = s.statusid
WHERE ac.adminuserid IS NOT NULL
AND f.statusid NOT IN (5, 6)
GROUP BY c.customerid,
c.partnerid,
c.Customer,
c.isprimary,
c.orderid,
c.createdate,
au.firstname,
au.lastname
)
이 * 오류 동안 소스 XML의 유효성을 검사 * – Kermit
그래, 나는 그것을 보았다 (문제는 키보드와 의자 사이에 존재). 그것이 실제로 변화를 가져 왔습니까? 당신은 여전히 XML을 볼 수 있습니다 ... –
'OVER'는 정렬을 암시하지 않습니까? – Kermit