假设我想根据与该内容相关联的user_id查询内容表中的数据 - 但我想通过多个用户获取内容。
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
这会更有效吗?
答案 0 :(得分:1)
或者更简单的事情:
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id IN (1,2,3,4,5,6,7...50)
从像PHP这样的东西构建动态SQL就像这样。
答案 1 :(得分:0)
我认为很难说它是否会更快,数据库最终仍然必须做同样的工作,但是它可以通过连接算法比索引搜索更有效地完成它,你必须对它进行基准测试。