gpt4 book ai didi

sql - 与内部联接相比,使用 WHERE 子句的交叉联接的性能

转载 作者:行者123 更新时间:2023-11-30 22:56:00 24 4
gpt4 key购买 nike

发出内部连接的效果与在 WHERE 子句中使用连接条件声明交叉连接相同。我注意到我公司的很多人都使用交叉连接,而我会使用内部连接。在更改其中一些查询后,我没有注意到任何显着的性能提升,并且想知道这是否只是巧合,或者 DBMS 是否透明地优化了这些问题(在我们的例子中是 MySql)。这里有一个具体的例子供讨论:

SELECT User.*
FROM User, Address
WHERE User.addressId = Address.id;

SELECT User.*
FROM User
INNER JOIN Address ON (User.addressId = Address.id);

最佳答案

交叉联接产生的结果由来自两个或多个表的行的每个组合组成。这意味着如果表 A 有 6 行而表 B 有 3 行,则交叉联接将产生 18 行。两个表之间没有建立任何关系——您实际上只是产生了所有可能的组合。

通过内部联接,表中一行的列值与另一个(或同一个)表中另一行的列值组合形成单行数据。

如果将 WHERE 子句添加到交叉联接,它的行为类似于内部联接,因为 WHERE 施加了限制因素。

只要您的查询符合常识和供应商特定的性能指南 (i),我喜欢将决定使用哪种类型的连接视为一个简单的品味问题。

(i) 供应商特定性能指南

  1. > MySQL Performance Tuning and Optimization Resources
  2. > PostgreSQL Performance Optimization

关于sql - 与内部联接相比,使用 WHERE 子句的交叉联接的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26356231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com