Join 联接多表顺序

Join 联接多表顺序,join,relational-database,Join,Relational Database,我想我在什么地方读过,连接是关联的和交换的,所以连接查询中表的顺序是无关的,这是真的吗 如果是这样的话,我这里有一个情况,我有4个这样的表: Ss_id、sname、状态、城市供应商 Jj_id、jname、城市工作/项目 Pp_id、pname、颜色、重量、城市部分 SPJs_id、p_id、j_id、qnty供应商-零件-工作 所以我的问题是,以下连接是否相同? S join J join SPJ S join SPJ join J结果可能返回相同的结果,打开执行计划sql查看不同的成本、执

我想我在什么地方读过,连接是关联的和交换的,所以连接查询中表的顺序是无关的,这是真的吗

如果是这样的话,我这里有一个情况,我有4个这样的表: Ss_id、sname、状态、城市供应商 Jj_id、jname、城市工作/项目 Pp_id、pname、颜色、重量、城市部分 SPJs_id、p_id、j_id、qnty供应商-零件-工作

所以我的问题是,以下连接是否相同? S join J join SPJ
S join SPJ join J

结果可能返回相同的结果,打开执行计划sql查看不同的成本、执行时间、,etcam不是在谈论mysql或任何数据库,我只是在谈论连接的定义,所以如果我先连接S和J,它们将根据城市连接,然后将这个结果与SPJ连接,将根据S_id和p_id连接。另一方面,如果我先取S和SPJ,这将在S_id上连接,然后如果我取这个结果并与p连接city和p_id上的连接显然不一样,要么我做得不对,要么多个连接不一定是关联的。我不谈论mysql或任何数据库。我告诉你S JOIN J JOIN SPJ和S JOIN SPJ JOIN J可以返回相同的数据结果。如果要查看差异,请在使用MS SQL的执行计划中查找信息。它将向你显示执行时间、行数和资源成本的差异。@Doggynub如果连接是指关系代数中的自然连接,那么答案是肯定的。自然连接是结合的和交换的。对于SQL样式的联接,情况未必如此。