【发布时间】:2017-07-31 18:00:56
【问题描述】:
如果我有一个表A,主键w,表B,主键x,外键引用A.w,称为y,还有一个字段z。以下查询有什么区别:
SELECT w, x, y, z FROM A INNER JOIN B ON A.w = B.y WHERE B.z = SomeValue
和
SELECT w, x, y, z FROM B INNER JOIN A ON A.w = B.y WHERE B.z = SomeValue
如果B.z和B.y是复合主键,还有区别吗?
如果“更标准”的代码没有区别?
【问题讨论】:
-
这两个查询没有区别。
inner join的操作数顺序不影响结果,也不应该影响执行计划。 -
您使用的是哪个 DBMS?后格雷斯?甲骨文?
-
要找出有任何影响的if,检查执行计划。
-
@a_horse_with_no_name 重复是错误的,问题是关于 1 个连接的参数顺序(交换性),但重复是关于多个连接的顺序(关联性)。 (我正在寻找合适的副本,请告诉我你有一个。迄今为止最旧的只有 2013 stackoverflow.com/q/19612208/3404097。)
标签: sql