gpt4 book ai didi

mysql - 同一张表上多个连接的性能

转载 作者:行者123 更新时间:2023-11-29 21:46:38 25 4
gpt4 key购买 nike

给出下表:

操作

 - id - UNSIGNED INT - PRIMARY KEY
- name - VARCHAR(50)
- user1_id - UNSIGNED INT - INDEX
- user2_id - UNSIGNED INT - INDEX
- user3_id - UNSIGNED INT - INDEX

(我为示例做了简短的描述,但实际上有 9 个用户)

用户

 - id - UNSIGNED INT - PRIMARY KEY
- name - VARCHAR(50)

我想显示带有每个用户名称的操作列表(注意:操作并不总是定义其所有用户)

我能想到的唯一解决方案是一个可怕的查询,每个用户都有一个左连接:

SELECT name, user1.name AS name1, user2.name AS name2, user3.name AS name3
FROM actions
LEFT JOIN users AS user1 ON user1.id = actions.user1_id
LEFT JOIN users AS user2 ON user2.id = actions.user2_id
LEFT JOIN users AS user3 ON user3.id = actions.user3_id

实际查询有 9 个用户的 9 个左连接(+ 2 个内部连接来恢复有关该操作的其他一些内容)

这可行,但必须有一个性能更高的解决方案。这个有多糟糕?同一个表上的 9 个连接和 9 个相似表上的 9 个连接之间有区别(就性能而言)吗?

最佳答案

我相当确定,如果翻转的话,这会给你带来类似的结果集:

SELECT a.name, u.name
FROM actions a
CROSS JOIN users u

关于mysql - 同一张表上多个连接的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34061871/

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