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

时间:2013-09-25 10:10:03

标签: php mysql sql

我有一张有百万行的表。它将用户ID作为主键。我有一个包含500个用户ID的数组。

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

但我认为这不是有效的方法。所以请提出其他方法。

4 个答案:

答案 0 :(得分:1)

我假设你的id是整数。也许你从其他一些来源获得这个ID列表,以便在mysql端加入不是所需的解决方案。如果是,则查找500 Ids列表中的最大和最小ID。你可以在php端做到这一点。如果您有最大值和最小值,则使用 where clause

查询mysql数据库
select ...
  from table_name
  where min_id <= id and id <= max_id

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

答案 1 :(得分:1)

我过去做过这个,我不确定我的方法效率最高。

我用ids创建一个字符串:其中id = a或id = b或id = c ...

然后我在它前面添加了select语句,并进行了一个fetchall。

答案 2 :(得分:0)

我的猜测是你从另一个表中获取这些用户ID,并将它们存储在一个数组中。如果这是正确的,那么您应该更改获取这些用户ID的查询,以便它使用连接。

答案 3 :(得分:-1)

加入会帮助你,因为 IN()不是一个好的编程习惯。 您可以在此处了解加入http://mysqljoin.com/