假设我想根据与该内容关联的user_id从内容表中查询数据 - 但我想通过多个用户获取内容。多重平等测试与MySQL中连接的效率
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id=1 OR user_id=2 OR ...
在我看来,这是相对有效的......达到一个点。假设content
表的记录大于200k,我对50个特定用户的记录感兴趣。像以下这样的查询是否仍然有效?
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id=1 OR ... OR user_id=50
我正在考虑创建一个users_group表,像这样:
CREATE TABLE users_group (
group_id int(11),
user_id int(11),
primary_key(group_id,user_id)
);
...以及与用户的软件有兴趣的团体填充它
然后我可以做像这样的查询:
SELECT field1, field2, ... fieldn
FROM content c
INNER JOIN users_group ug ON c.user_id=ug.user_id
WHERE ug.group_id=1
这会更有效吗?
这只是一个句法变化,优化器会查看这个和一系列OR语句一样的 – 2011-05-18 21:17:21
同意。这是他的问题的一个不好的答案。我认为正确的答案是'这更有效'。数据库必须以某种方式获取这些信息,并且提供的速度会更快。尽管如此,假设索引工作正常,对200K记录也不会产生重大影响。 – 2011-05-18 21:26:39