使用多表中的连接和选择是否有区别?
问题描述:
第一种选择:使用多表中的连接和选择是否有区别?
SELECT Table1.* ,Table2.Price AS Price
FROM
Table1,Table2
WHERE
Table1.ID = Table2.ID
第二个选项:
SELECT Table1.* ,Table2.Price AS Price
FROM
Table1 INNER JOIN Table2 ON Table1.ID = Table2.ID
哪一个更好,最有效的?
答
它可能会给你相同的结果,但第二个选项更好,因为它遵循最新标准,并正确定义了什么是连接,哪些可能是where子句。在表现方面,上述两个陈述应该表现相同。
答
第二种方式是做同样的事情,只有ANSI(美国国家标准学会标准化结构化查询语言)标准SQL形式的SQL。进一步研究以找出其利弊。
http://it.toolbox.com/blogs/oracle-experience/a-case-for-ansi-sql-15647
答
此外,应该在任何像样的SQL本书覆盖(我有我从O'Reilly的袖珍参考这一问题的理解)。另外,我还想知道人们在哪里获得旧的语法示例,也许我只是从良好的来源学习了SQL。另外,尽管人们重复说这两个变体产生的查询具有相同的性能,但我仍然倾向于怀疑当谈话不是针对某些DBMS特别指出在其文档中,特别是谈论DBMS时。
答
第一个查询连接样式使用古代连接语法,而第二个样式更加当前。在大多数情况下,它们会导致完全相同的查询执行计划。然而,当使用左和右外连接,你可以有probelms,看到这个答案和注释:
ANSI joins versus "where clause" joins
从SQL Server BOL(2000)“在早期版本的 微软的SQL Server™的 2000左,右外连接 条件使用
*=
和=*
运营商WHERE 子句中指定。在某些情况下,这句法 结果,可以 在一个以上的方式来解释一个模糊查询。