小编qlt*_*qlt的帖子

MySQL使用带有2个查询,子查询或连接的select?

与我的上一个问题(MySQLi性能,多个(单独)查询与子查询)相关,我遇到了另一个问题.

有时我使用子查询从另一个表中选择值(例如,连接到ID的用户名),但我不确定select-in-select,因为它看起来不是很干净我不确定性能.

子查询可能如下所示:

SELECT
    (SELECT `user_name` FROM `users` 
     WHERE `user_id` = table2.user_id) AS `user_name`
    , `value1`
    , `value2`
FROM
    `table2`
....
Run Code Online (Sandbox Code Playgroud)

对table1的结果使用单独的查询而对table2使用另一个查询是否"更好"(连接加倍,但不需要交叉表),或者我是否应该使用JOIN在单个查询中获取结果?

我对JOINS和子查询没有多少经验,所以我不确定在这种情况下JOIN是否会"太多",因为我真的只需要一个名称连接到一个ID(或者可能需要计算一个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
....
Run Code Online (Sandbox Code Playgroud)

如果我更喜欢JOIN,在这种情况下哪一个最好:左连接,内连接或其他什么?

mysql sql performance join

3
推荐指数
1
解决办法
2355
查看次数

标签 统计

join ×1

mysql ×1

performance ×1

sql ×1