INNER JOIN中表的顺序

问题描述 投票:0回答:1

[读一本书,Alan Beaulieu的学习SQL。关于内部联接,它表明无论INNER JOIN中表的顺序如何,结果都相同,并给出如下原因:

如果您对帐户/雇员/客户查询的所有三个版本为何感到困惑,产生相同的结果,请记住,SQL是一种非过程语言,这意味着描述要检索的内容以及需要使用的数据库对象涉及,但是由数据库服务器决定如何最好地执行您的查询。使用从数据库对象收集的统计信息,服务器必须选择一个三个表中的一个作为起点(此后选定的表称为驱动表格),然后决定以何种顺序连接其余表格。因此,命令您的from子句中出现在哪些表中并不重要。

这是否意味着如果从数据库对象收集的统计信息发生变化,那么结果也会发生变化?

sql inner-join
1个回答
1
投票

这是否意味着如果从数据库对象收集的统计信息发生变化,那么结果也会发生变化?

没有相同的查询将始终产生相同的结果(当然,前提是基础数据相同)。作者正在解释的是,数据库可以选择一种或多种策略来对查询进行[[处理(从一个表或另一个表开始,使用this或that的算法来连接行,依此类推)。该决定是基于许多因素做出的,其中一些因素是基于统计数据中可用的信息。

关键是SQL是一种声明性语言,而不是过程语言:您不必选择

如何

数据库处理查询,而只是告诉它what您想要的结果。] >但是,无论数据库选择哪种算法,都保证结果是一致的。
© www.soinside.com 2019 - 2024. All rights reserved.