【发布时间】:2017-02-28 16:09:32
【问题描述】:
我总是看到人们使用这两种方式来连接两个或多个表。
select *
from BOOKS as B
where B.name = 'GOOD BOOK'
inner join select *
from AUTHOR as A
where A.AUTHOR_NAME = 'GOOD AUTHOR' on B.BOOK_ID = A.BOOK_ID
select *
from BOOKS as B
inner join AUTHOR as A on B.BOOK_ID = A.BOOK_ID
where B.name = 'GOOD BOOK'
and A.AUTHOR_NAME = 'GOOD AUTHOR'
我想知道使用哪个更快(性能更好),为什么?
【问题讨论】:
-
这两种语法都不是 Oracle 的有效语法(第二个更接近,但在表别名中丢失了
as)。不知道第一个是否适用于 MySQL 或 DB2。无论如何,您为此标记的三个数据库的答案可能会有所不同。您是否对实际使用的数据库中的真实数据进行过任何性能测试,或者查看过执行计划等? -
first 对 db2 无效,我不考虑进入 mysql
-
问题是关于基准差异,而不是代码的有效性。从示例中可以清楚地看出,作者询问如何更好地构建查询性能。