似乎要合并两个或多个表,我们可以使用join或where。一个相对于另一个的优点是什么?
任何涉及多个表的查询都需要某种形式的关联,以将结果从表“ A”链接到表“ B”。传统的(ANSI-89)方法是:
SELECT *
FROM TABLE_A a, TABLE_B b WHERE a.id = b.id
这是使用ANSI-92 JOIN语法重写的查询:
SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.id = a.id
在受支持的地方(Oracle 9i +,PostgreSQL 7.2 +,MySQL 3.23 +,SQL Server 2000+),使用两种语法都不会对性能产生任何好处。优化器将它们视为相同的查询。但是更复杂的查询可以从使用ANSI-92语法中受益:
在ANSI-89上使用ANSI-92 JOIN语法的原因有很多:
ANSI-92 JOIN语法是模式,而不是反模式:
缺乏熟悉度和/或舒适度,我认为继续使用ANSI-89 WHERE子句代替ANSI-92 JOIN语法没有任何好处。有人可能会抱怨ANSI-92语法更冗长,但这就是它的明确之处。越明确,就越容易理解和维护。