【发布时间】:2018-02-22 14:53:30
【问题描述】:
以下查询从多个表中检索数据。
有一个问题,随着数据的增加,检索数据的时间也增加了(行数已经达到2万,显示结果需要一分钟多)。
我使用了存储过程,但结果是一样的。有什么解决办法吗?
Select TransactionDate,
T.InvoiceNo,
T.TotalAmount,
PCost.TotalCostPrice ,
(T.TotalAmount - PCost.TotalCostPrice) as TProfit,
P.PaidAmount, P.Balance,
CONCAT(Lastname, ', ', Firstname, ' ', Middlename) as Cashier,
ISNULL(P.DiscountAmount,0),
ISNULL(P.ProfitAmount,0),
CustomerInfo
FROM [Transaction] T
INNER JOIN TransactionPayment P ON T.InvoiceNo = P.InvoiceNo
INNER JOIN Employee E ON T.EmployeeID = E.EmployeeID
LEFT OUTER JOIN (
SELECT SUM(p.CostPrice*tl.Quantity) as TotalCostPrice,
tl.InvoiceNo
FROM Product p
INNER JOIN TransactionLineItem tl ON p.ProductID = tl.ProductID
INNER JOIN [Transaction] T ON T.InvoiceNo = tl.InvoiceNo
WHERE TransactionDate >= @DateFrom AND TransactionDate <= @DateTo
GROUP BY tl.InvoiceNo
) as PCost ON PCost.InvoiceNo = T.InvoiceNo
WHERE TransactionDate >= @DateFrom AND TransactionDate <= @DateTo
【问题讨论】:
-
没有显示执行计划,只能猜测如何改进查询。使用任何 ORM 吗?
标签: sql sql-server