我有一张有百万行的表。它以用户 ID 作为其主键。我有一个包含 500 个用户 ID 的数组。
我想从表中选择用户 ID 在数组中的所有记录。我知道这样做的一种方法是将数组更改为字符串并通过传递字符串来运行 IN 查询。
但我认为这不是有效的方法。所以请建议其他方式。
我假设你的 id 是整数。也许您正在从其他一些来源获取此 ID 列表,因此不需要在 mysql 端进行连接。如果是,则在您的 500 Id 列表中找到最大和最小 id。您可以在 php 端执行此操作。当你有最大值和最小值时,然后用一个查询 mysql db where clause
select ...
from table_name
where min_id <= id and id <= max_id
id
是主键,所以优点是它已经被索引了。
我过去做过这个,我不确定我的方法是最有效的。
我从 ids 中创建了一个字符串: where id = a or id = b or id = c ...
然后我在它前面添加 select 语句,并执行 fetchall。
我的猜测是您从另一个表中获取这些用户 ID,并且您将它们存储在一个数组中。如果这是正确的,那么您应该更改获取这些用户 ID 的查询,以便它使用连接来代替。
连接会帮助你,因为IN()不是一个好的编程习惯。你可以在这里了解加入:http : //mysqljoin.com/