【发布时间】:2017-12-28 07:03:57
【问题描述】:
我有一个查询来获取用户朋友的数据。我有 3 个表,一个是 user 表,第二个是 user_friend 表,它有 user_id 和friend_id(都是用户表的外键),第三个表是 feed 表,它有 user_id 和 feed 内容。饲料可以显示给朋友。我可以通过 join 或使用IN 子句以两种方式查询(我可以通过我用于网络的图形数据库获取所有朋友的 id)。
这里有两个查询:
SELECT
a.*
FROM feed a
INNER JOIN user_friend b ON a.user_id = b.friend_id
WHERE b.user_id = 1;
在此查询中,我从图形数据库中获取朋友 ID,并将传递给此查询:
SELECT
a.*
FROM feed a
WHERE a.user_id IN (2,3,4,5)
当我有数百万条记录时,哪个查询运行得更快且性能更好?
【问题讨论】:
-
那个问题有子查询,我在 IN 子句中有实际值。我不需要查询表来获取值。但我在 IN 子句中有 1000 个值。
-
它们是两个不同的查询。有什么更好的;锤子还是螺丝刀?
标签: mysql performance join in-clause