有沒有什麼辦法可以避免內部連接從客戶表中獲取客戶名和姓,以及如何優化執行計劃?如何避免額外的內部連接來優化此查詢?
SELECT c1.firstname, c1.lastname, t.*
FROM customer c1
INNER JOIN
(select c.Customerid ,count(si.CustomerID) as 'No Of Orders'
from Customer c
LEFT OUTER join SalesInvoice si ON si.CustomerID = c.CustomerID
GROUP by c.CustomerID) as t
ON c1.CustomerID = t.Customerid
爲什麼你認爲INNER JOIN是一件壞事?此查詢更好,然後按名字,姓氏進行分組。 COUNT()OVER()應該和你的一樣好。如果你的目的是簡潔的,我會做Customer LEFT JOIN(從SalesInvoice GROUP BY CustomerID中選擇CustomerID,count(*)cnt)。 – Alsin 2013-03-25 08:48:06