从具有数百万条记录的 MySQL 数据库中获取少量记录

4

我有一张拥有百万行的表格,它的主键是用户ID。我有一个包含500个用户ID的数组。

我想从表格中选择所有用户ID在数组中的记录。我知道其中一种方法是将数组转换为字符串并通过传递该字符串来运行IN查询。

但我认为这不是一种高效的方法。所以请您建议其他方法。


3
你从哪里获取这些用户ID?能否运行一次联接查询来代替? - Wayne Whitty
实际上,我的真正问题是我获得了一个fb id和它的fb访问令牌,通过POST参数获取用户的朋友的fb ids,然后想要查找所有在我们数据库中注册的朋友。为了不让它变得复杂,我发布了上面的问题。所以不能应用连接。 - Tirthankar Kundu
4个回答

1
我假设你的id是整数。也许你从其他来源获取了这些id列表,所以在mysql上进行join不是一个理想的解决方案。如果是这样的话,请找到你500个id列表中存在的最大和最小id。你可以在php端完成这项工作。当你拥有最大和最小值时,使用where子句查询mysql数据库。
select ...
  from table_name
  where min_id <= id and id <= max_id

id 是主键,因此优点是它已经被索引。


1
我过去做过这件事,但不确定我的方法是否最有效。
我将ID组成一个字符串:其中id = a或id = b或id = c ...
然后我在其前面添加选择语句,并执行fetchall。

我想补充一下,你可以使用这个方法并通过将字符串“Where id in (a,b,c,...)”简化一些。 - asantaballa
我已经在我的帖子中写过,我正在使用IN查询。不要重复那个,我想要除此之外的建议。 - Tirthankar Kundu

0

我猜你是从另一个表中获取这些用户ID,并将它们存储在数组中。如果我的猜测正确,那么你应该改变获取这些用户ID的查询方式,使用连接(join)代替。


-1

连接会帮助你,因为IN()不是一个好的编程实践。 你可以在这里学习关于连接的知识:http://mysqljoin.com/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接