Sql server 2012 SQL查询优化2012
我有一个名为Sql server 2012 SQL查询优化2012,sql-server-2012,Sql Server 2012,我有一个名为SnackMaster的表。其结构如下: SnackID int SnackName varchar(100) SnackAmount decimal(18,2) e、 g: 还有另一个名为SnacksOrderDetais的表,其中包含来自员工的零食订单。其结构如下所示: OrderID int EmployeeID int SnackCount tinyint TotalAmount decimal(18,2
SnackMaster
的表。其结构如下:
SnackID int
SnackName varchar(100)
SnackAmount decimal(18,2)
e、 g:
还有另一个名为SnacksOrderDetais
的表,其中包含来自员工的零食订单。其结构如下所示:
OrderID int
EmployeeID int
SnackCount tinyint
TotalAmount decimal(18,2)
orderDate date
e、 g:
我需要一份小吃摘要,如下所示:
SnacksName : Tea,
SnackCount : 4 (that is 2 each from the above two orders),
TotalAmount : 40 (twenty from each orders)
我使用以下查询来获得结果。结果是确定的,但我想知道是否有任何其他优化查询可用
SELECT DISTINCT SOD.SnacksID
,SnacksName
,(SELECT SUM(SnacksCount)
FROM SnacksOrderDetails
WHERE SnacksID = SOD.SnacksID ) AS SnacksCount
FROM SnacksOrderDetails SOD
INNER JOIN SnacksMaster SM ON SOD.SnacksID = SM.SnacksID
WHERE SOD.OrderedOn = @OrderDate
使用GROUP BY获得相同的结果。大概是这样的:
SELECT SOD.SnacksID, SnacksName, SUM(SnacksCount) AS SnacksCount
FROM SnacksOrderDetails SOD
INNER JOIN SnacksMaster SM ON SOD.SnacksID = SM.SnacksID
WHERE SOD.OrderedOn = @OrderDate
GROUP BY SOD.SnacksID
请澄清TotalAmount和SnackCount之间的区别 从这里开始:
SELECT SM.SnacksName,
SUM(SOD.SnacksCount) AS SnacksCount
FROM SnacksMaster SM
INNER JOIN SnacksOrderDetails SOD ON SOD.SnacksID = SM.SnacksID AND SOD.OrderedOn = @OrderDate
GROUP BY SM.SnacksName
是的,没错。不知何故,他忽略了这一点。现在更正。
SELECT SOD.SnacksID, SnacksName, SUM(SnacksCount) AS SnacksCount
FROM SnacksOrderDetails SOD
INNER JOIN SnacksMaster SM ON SOD.SnacksID = SM.SnacksID
WHERE SOD.OrderedOn = @OrderDate
GROUP BY SOD.SnacksID
SELECT SM.SnacksName,
SUM(SOD.SnacksCount) AS SnacksCount
FROM SnacksMaster SM
INNER JOIN SnacksOrderDetails SOD ON SOD.SnacksID = SM.SnacksID AND SOD.OrderedOn = @OrderDate
GROUP BY SM.SnacksName