为了帮助澄清,这里有一些代码:
方法1
SELECT * FROM tableA a
JOIN tableB b ON a.id=b.id
JOIN tableC c ON a.id=c.id
JOIN tableD d ON a.id=d.id
方法2
SELECT * FROM tableA a
JOIN tableB b ON a.id=b.id
JOIN tableC c ON b.id=c.id
JOIN tableD d ON c.id=d.id
答案 0 :(得分:0)
没有差异。
请记住,数据库是基于数学集理论的。就集合论而言,这些联接是平等的。
因此,如果查看实际的查询执行计划,您将看到SQL服务器甚至正在重新组织联接,并且可能会以完全不同的方式重新排列它们。
例如,如果一个表只包含10个记录,那么这个表通常用于第一个连接,因为通过仅删除5个记录,您可以减少整个结果集的50%。
数据库正在维护有关记录数量和内容分布的一些统计信息。通过这些统计信息,查询引擎可以非常好地“猜测”哪个顺序是最快的。
您可以使用查询提示来影响此行为,但这仅在极少数情况下有用。