Rey*_*rPM 5 mysql performance query mysql-5.5 query-performance
我有这个简单的查询:
SELECT
friend_id
FROM
default_friend
WHERE
user_id = 1
Run Code Online (Sandbox Code Playgroud)
结果如下:
+-----------+
| friend_id |
+-----------+
| 2250 |
| 4901 |
| 7187 |
| 9337 |
| 9843 |
+-----------+
Run Code Online (Sandbox Code Playgroud)
现在我有这个查询也有点复杂:
SELECT
friend_id, user_id, approved
FROM
default_friend
WHERE
user_id = 1
AND (friend_id IN (SELECT
friend_id
FROM
default_friend
WHERE
user_id = 1))
AND approved = 0
Run Code Online (Sandbox Code Playgroud)
我的问题是:进入第二个查询的 SELECT 会返回与第一个查询返回的数据相同的数据吗?意思是friend_id = 2250, 4901, 7187, 9337, 9843 还是我需要运行第一个并以编程方式拆分结果并构建第二个?我也想知道哪种方式更合适!
不,您不必运行第一个查询、获取结果、动态构建第二个查询然后运行它。
而且您也不需要这个复杂的第二个查询。一个简单的就足够了:
SELECT
friend_id, user_id, approved
FROM
default_friend
WHERE
user_id = 1
AND
approved = 0 ;
Run Code Online (Sandbox Code Playgroud)
而你并不真正需要的user_id
和approved
在SELECT
列表中无论是。他们将要1
和0
所有行,不是吗?
所以,问题是。为什么不保留原始的第一个查询,只添加附加条件 ( approved = 0
) ?:
SELECT
friend_id
FROM
default_friend
WHERE
user_id = 1
AND
approved = 0 ;
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
95 次 |
最近记录: |