Sql 带/不带的差异;“左连接”;并在“中匹配”;其中;或;“关于”吗;?
下面两个不同的SQL代码之间是否存在性能差异?第一个是没有Sql 带/不带的差异;“左连接”;并在“中匹配”;其中;或;“关于”吗;?,sql,Sql,下面两个不同的SQL代码之间是否存在性能差异?第一个是没有左jon并与中的匹配,另一个是左join并与上的匹配 因为我从那些sql中得到了完全相同的结果/输出,但我很快就会处理更大的表(比如数十亿行),所以我不想有任何性能问题。先谢谢你 select a.customer_id from table a, table b where a.customer_id = b.customer_id select a.customer_id from table a left join tabl
左jon
并与中的匹配,另一个是左join
并与上的匹配
因为我从那些sql中得到了完全相同的结果/输出,但我很快就会处理更大的表(比如数十亿行),所以我不想有任何性能问题。先谢谢你
select a.customer_id
from table a, table b
where a.customer_id = b.customer_id
select a.customer_id
from table a
left join table b
on a.customer_id = b.customer_id
两者做的事情不同,是的,会对性能产生影响
您的第一个示例是带有过滤器的交叉连接
,该过滤器将其简化为内部连接
(实际上,所有规划人员都非常聪明,可以将其简化为内部连接
,但从语义上讲,它是一个交叉连接
和过滤器)
第二个是左连接
,这意味着在不满足筛选条件的情况下,仍然可以从表a中获取所有记录
这意味着规划师必须假设表a中的所有记录都是相关的,并且表b中的相关记录在第二个示例中是相关的,但在第一个示例中,规划师知道只有相关记录是相关的(因此在规划中有更多的自由度)
在一个非常小的数据集中,您将看不到任何差异,但您可能会得到不同的结果。在大型数据集中,您的左连接
的性能永远不会比内部连接
好,而且可能会更差。这两种连接的性能不同,是的,会对性能产生影响
您的第一个示例是带有过滤器的交叉连接
,该过滤器将其简化为内部连接
(实际上,所有规划人员都非常聪明,可以将其简化为内部连接
,但从语义上讲,它是一个交叉连接
和过滤器)
第二个是左连接
,这意味着在不满足筛选条件的情况下,仍然可以从表a中获取所有记录
这意味着规划师必须假设表a中的所有记录都是相关的,并且表b中的相关记录在第二个示例中是相关的,但在第一个示例中,规划师知道只有相关记录是相关的(因此在规划中有更多的自由度)
在一个非常小的数据集中,您将看不到任何差异,但您可能会得到不同的结果。在一个大数据集中,您的左连接
的性能永远不会比内部连接
好,而且可能会更差。问题是:您想要左连接还是内部连接?这两个sql代码段做了不同的事情<代码>内部连接
于1992年添加到标准SQL中。这意味着逗号式连接已经过时25年了。谢谢大家的评论。由于我的无知,我没有注意到逗号过程是一个内部连接,我很有可能在这两种情况下得到相同的结果。如果问题是:“旧的、古老的、脆弱的隐式连接和显式连接运算符之间是否存在性能差异”,答案是:否。如果问题是:“内部联接和外部联接之间是否存在性能差异那么答案是:很可能是的问题是:您想要左连接还是内部连接?这两个sql代码段做不同的事情<代码>内部连接
于1992年添加到标准SQL中。这意味着逗号式连接已经过时25年了。谢谢大家的评论。由于我的无知,我没有注意到逗号过程是一个内部连接,我很有可能在这两种情况下得到相同的结果。如果问题是:“旧的、古老的、脆弱的隐式连接和显式连接运算符之间是否存在性能差异”,答案是:否。如果问题是:“内部联接和外部联接之间是否存在性能差异”然后答案是:很可能是,没有SQL代码片段或模式的解释非常好:)没有SQL代码片段或模式的解释非常好:)