例如:
在表a中,我们有 1000000 行 在表b中,我们有 5 行
如果我们使用它会更快
从b内部连接中选择* a在b.id = a.id上
比
从a.id = b.id上的内部联接b中选择*
答案 0 :(得分:0)
不,JOIN顺序无关紧要,查询引擎将基于索引和其他内容的统计信息重新组织其顺序。在优化过程中,按订单的JOIN会更改。
您可以自己进行全部测试,下载一些测试数据库,例如AdventureWorks或Northwind,或者在数据库上进行尝试,您可以这样做:
它们应该相同,因为查询引擎会根据其他因素重新组织它们。
唯一需要注意的是选项 FORCE ORDER 。该选项将强制按照您指定的确切顺序进行连接。
答案 1 :(得分:0)
这不太可能。连接两个表的速度有很多因素。这就是为什么数据库引擎具有优化阶段,其中他们考虑实现查询的不同方式。
有很多不同的选择:
b
,然后再扫描a
。a
,然后再扫描b
。b.id
上的索引。a.id
上的索引。这些只是高级描述-有多种方法可以实现其中一些方法。还可以对表进行分区,从而增加了复杂性。
加入顺序只是考虑因素之一。
在这种情况下,查询的结果可能取决于所返回数据的大小,而不是取决于用于获取数据的实际算法。