Tôi có truy vấn sql bên dưới đang chạy rất chậm. Tôi đã xem xét kế hoạch thực hiện và tuyên bố rằng một loại trên Files.OrderId là hoạt động chi phí cao nhất (53%). Tại sao điều này sẽ xảy ra nếu tôi không đặt hàng bởi OrderId ở đâu? Đặt cược của tôi tốt nhất để tạo một chỉ mục trên File.OrderId?Tại sao có một loại hiển thị trong kế hoạch thực hiện của tôi?
Execution plan nếu có ai quan tâm.
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
)
* Lỗi khi xác thực nguồn XML * – Kermit
Vâng tôi đã thấy điều đó. Liệu nó thực sự làm cho một sự khác biệt? Bạn vẫn có thể thấy XML ... –
Không phải là 'OVER' có nghĩa là sắp xếp? – Kermit