不确定我的内连接是否是高效的SQL

时间:2018-02-01 21:41:42

标签: sql join inner-join

SELECT concat(e.FirstName, e.LastName), o.OrderID, o.OrderDate, p.ProductName, c.CategoryName, od.Quantity, od.UnitPrice, od.Discount, ((od.UnitPrice* od.Quantity)*(1-od.Discount)) AS 'Total Item Price', Country, Region, City
FROM Employees e
INNER JOIN Orders o
    ON  e.EmployeeID = o.EmployeeID
INNER JOIN [Order Details] od
    ON o.OrderID = od.OrderID
INNER JOIN Products p
    ON od.ProductID = p.ProductID
INNER JOIN Categories c
    ON p.CategoryID = c.CategoryID
WHERE e.Country = 'USA' OR e.Country = 'France' OR e.Country = 'Germany' OR e.Country = 'Brazil'
ORDER BY OrderDate DESC, e.FirstName;

我认为有一种更简单的方法来执行此查询?关于这个人的任何意见?

2 个答案:

答案 0 :(得分:2)

如果您需要加入,则需要加入。没有更有效的写连接方式。

如果您担心效率,请确保您的查询可以使用索引。例如,您要加入的列或您WHEREORDER BY子句中的列。

答案 1 :(得分:1)

看起来内连接正在做你需要的。 我唯一要改变的是在哪里,我会把它改为

WHERE e.Country IN ('USA', 'France', 'Germany', 'Brazil')

谢谢