Ift*_*din 0 mysql performance join query-performance
我在数据库中有两张表,一张是Orders,另一张是customers
订单表包含:订单 ID、客户 ID 和订单日期
客户表包含:CustomerID、CustomerName、ContactName 和 country
实际上,“Orders”表中的“CustomerID”列指的是“Customers”表中的“CustomerID”。上面两个表之间的关系是“CustomerID”列。
加入查询
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders
INNER JOIN Customers
ON Orders.CustomerID=Customers.CustomerID;
Run Code Online (Sandbox Code Playgroud)
简单查询
SELECT Orders.OrderID, Customers.CustomerName, Orders.OrderDate
FROM Orders,Customers
WHERE Orders.CustomerID=Customers.CustomerID;
Run Code Online (Sandbox Code Playgroud)
两个查询的结果是: OrderID 、 CustomerName 和 OrderDate
在上面的两个查询中,我得到了相同的结果。我想知道这些查询之间的区别,如果我们可以通过 SIMPLE 查询来实现,为什么要使用 JOIN?
没有区别:您的两个示例完全等效,但使用了不同版本的 SQL 语法。数据库引擎将以完全相同的方式处理它们。
您的第一个示例是使用显式连接,并且是当今的首选语法。它是在 SQL-92 标准中引入的,几乎所有 SQL 样式的查询引擎都支持它。
您的第二个示例通常称为隐式连接。它是一种较旧的语法,但仍受大多数基于 SQL 的查询引擎的支持,并且仍在标准中(因此即使较新的语法是首选,也被认为是正确的)。随着显式连接的引入和广泛支持,它很快就失宠了,因为它们通常更清晰、更易于阅读和维护(尽管可以说旧语法具有更简洁的优点)。
请参阅https://en.wikipedia.org/wiki/Join_(SQL)以获取有关此连接类型和其他连接类型的更多示例,包括一些特定于引擎的变体。
| 归档时间: |
|
| 查看次数: |
1727 次 |
| 最近记录: |