与我的上一个问题(MySQLi 性能,多个(单独的)查询与子查询)相关,我遇到了另一个问题。
有时我使用子查询从另一个表中选择值(例如,连接到 ID 的用户名),但我不确定 select-in-select,因为它似乎不是很干净而且我不确定性能。
子查询可能如下所示:
SELECT
(SELECT `user_name` FROM `users`
WHERE `user_id` = table2.user_id) AS `user_name`
, `value1`
, `value2`
FROM
`table2`
....
对 table1 的结果使用单独的查询,对 table2 的结果使用另一个查询会“更好”(双倍连接,但不需要跨表),还是我什至应该使用 JOIN 在单个查询中获取结果?
我对 JOIN 和子查询还没有太多经验,所以我不确定在这种情况下 JOIN 是否会“太多”,因为我真的只需要一个连接到 ID 的名称(或者可能计算表中的行),或者如果它无关紧要,因为 select-in-select 也被视为某种 JOIN..
使用 JOIN 的解决方案可能如下所示:
SELECT
users.user_name , table2.value1, table2.value2
FROM
`table2`
INNER JOIN
`users`
ON
users.user_id = table2.user_id
....
如果我更喜欢 JOIN,在这种情况下哪一个最好:左连接、内连接还是其他?