首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL中多个相等测试与连接的效率

MySQL中多个相等测试与连接的效率
EN

Stack Overflow用户
提问于 2011-05-19 05:12:08
回答 2查看 172关注 0票数 2

假设我想根据与内容相关联的user_id从内容表中查询数据-但我想通过多个用户获取内容。

代码语言:javascript
复制
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id=1 OR user_id=2 OR ...

在我看来,这是相对有效的。在一定程度上。假设content表有超过200k条记录,而我对来自50个特定用户的记录感兴趣。像下面这样的查询仍然有效吗?

代码语言:javascript
复制
SELECT field1, field2, ... fieldn
FROM content
WHERE user_id=1 OR ... OR user_id=50

我正在考虑创建一个users_group表,如下所示:

代码语言:javascript
复制
CREATE TABLE users_group (
  group_id int(11),
  user_id int(11),
  primary_key(group_id,user_id)
);

..。并用软件感兴趣的用户组填充它。

然后我可以像这样做一个查询:

代码语言:javascript
复制
SELECT field1, field2, ... fieldn
FROM content c
INNER JOIN users_group ug ON c.user_id=ug.user_id
WHERE ug.group_id=1

这会不会更有效率?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-19 05:16:29

我认为很难说它是否会更快,数据库最终仍然必须做同样的工作,但它可能能够使用连接算法比使用索引查找更有效,您必须对其进行基准测试。

票数 0
EN

Stack Overflow用户

发布于 2011-05-19 05:14:38

或者,更简单的东西:

代码语言:javascript
复制
SELECT field1, field2, ... fieldn
 FROM content
 WHERE user_id IN (1,2,3,4,5,6,7...50)

通过这种方式,从PHP之类的东西构建为动态SQL非常容易。

  • 补充道:此外,在你达到1000个左右的条目之前,你都相当不错。您还必须注意MAX_PACKET,但这是在该范围内执行此操作的最简单/最快的方法。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6051093

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档