当前位置: 首页 > 面试题库 >

sql联接中联接列顺序的最佳实践?

琴修为
2023-03-14
问题内容

在我的办公室里,关于sql联接中联接列的顺序正在进行很大的讨论。我很难解释它,所以我只介绍两个sql语句。考虑到sql最佳实践,哪个更好?

SELECT a.Au_id 
FROM   AUTHORS a 
       INNER JOIN TITLEAUTHOR ta 
         ON a.Au_id = ta.Au_id 
       INNER JOIN TITLES t 
         ON ta.Title_id = t.Title_id 
WHERE  t.Title LIKE 鈥�%Computer%鈥�

或者

SELECT a.Au_id 
FROM   AUTHORS a 
       INNER JOIN TITLEAUTHOR ta 
         ON ta.Au_id = a.Au_id
       INNER JOIN TITLES t 
         ON t.Title_id = ta.Title_id
WHERE  t.Title LIKE 鈥�%Computer%鈥�

因此,在联接的ON部分中,是否编写是否重要A.x = B.y or B.y = A.x


问题答案:

此处的最佳实践是选择一个并 在团队中 坚持使用。就我个人而言,我更喜欢FROM a JOIN b ON b.col = a.col它,因为它对我来说似乎更干净。



 类似资料:
  • 问题内容: 无论性能如何,我从下面的查询A和B中都能得到相同的结果吗?C和D呢? 问题答案: 对于联接,不,顺序无关紧要。该查询将返回相同的结果,只要你改变你的选择来。 对于(,或)连接,是的,顺序是有意义的-和( 更新 )事情要复杂得多。 首先,外部联接不是可交换的,因此与 外部联接也不是关联的,因此在您的示例中同时涉及(可交换性和关联性)两个属性: 等效于 : 但: 不等同于 : 另一个(希望

  • 问题内容: 我有一个查询,其中Where子句中包含三个内部join语句。该查询大约需要2分钟才能执行。如果仅更改两个内部联接的顺序,性能将下降到40秒。 除了更改内部联接的顺序外,什么都不做会对查询性能产生如此大的影响?我本以为优化器会解决所有这些问题。 问题答案: SQL是声明性的,也就是说,JOIN顺序无关紧要。 但是,实际上,如果优化器未探究所有选项(理论上可能要花费数月),这是否是一个复杂

  • 什么是SQL和什么是不同的类型?

  • 问题内容: 我有三个表:R,S和P。 表R通过外键与S连接;有 应该 是S中至少一个的记录,所以我可以加入: 如果S中没有记录,那么我没有行,那很好。 然后表S与P联接,其中记录为P可能存在,也可能不存在,并与S联接。 所以我做 如果我想将第二个JOIN绑定到S而不是R,例如我可以使用括号,该怎么办: 还是这已经是R,S和P之间笛卡尔积的自然行为? 问题答案: 各种外部联接和普通联接都在相同的优先

  • 问题内容: 我想确认SQL查询 完全等同于FROM子句中的其他排列,例如 或者 只要橙子和奇异果之间的显式LEFT JOIN保持不变即可。根据我在各种文档中所阅读的内容,返回的集合应该完全相同。 我真的只关心查询的结果,而不关心它在实际数据库中的性能。(我使用的是PostgreSQL 8.3,而AFAIK不支持有关连接顺序的优化程序提示,它将尝试自动创建最佳查询计划)。 问题答案: 它是相同的,但

  • 问题内容: 我正在尝试在SQL Server 11.00.3393中的查询中连接多个列。 我尝试了新功能,但是当我使用两个以上的列时,它不起作用。 所以我想知道这是否是解决问题的最佳方法: 由于价值我不能使用。 编辑 如果我尝试我会得到一个错误 CONCAT函数需要2个参数 问题答案: 通过讨论,很明显,问题出在使用VS2010编写查询,因为它使用了受限于2个参数的规范函数。可能有一种方法可以更改