一尘不染

如何最好地组织“选择”中的内部联接

sql

假设我有3张桌子,每张桌子都与另一张桌子相关,

当我需要从每个表中获取一列时,如何组织(内部联接)会有所不同吗?

Select table1.column1,table2.column2,table3.column2
From table1 
Inner Join table2 on ..... etc
Inner Join table3 on .....

换句话说,我可以将(table2)放在(From)之后吗?

Select table1.column1,table2.column2,table3.column2
From table2
Inner Join table1 on ..... etc
Inner Join table3 on .....

阅读 92

收藏
2021-05-05

共1个答案

一尘不染

对于大多数查询,顺序无关紧要。

  • INNER JOIN既具有关联性又具有可交换性,因此表顺序无关紧要
  • SQL是声明性的。也就是说,定义查询的方式不是优化器的工作方式。它不会像您编写时那样逐行执行。

那就是…

  • 外连接既不是关联的也不是可交换的
  • 对于复杂的查询,优化器将“最佳猜测”,而不是经历所有“花费”过多的可能性。餐桌顺序 可能很 重要
2021-05-05