我有一个有100万行的表。它具有用户标识作为其主键。我有一个有500个用户ID的数组。从mysql数据库中获取几百条记录
我想从其用户标识符在数组中的表中选择所有记录。我知道这样做的一种方法是将数组更改为字符串,并通过传递字符串来运行IN查询。
但我认为这不是有效的方法。所以好好建议其他方法。
我有一个有100万行的表。它具有用户标识作为其主键。我有一个有500个用户ID的数组。从mysql数据库中获取几百条记录
我想从其用户标识符在数组中的表中选择所有记录。我知道这样做的一种方法是将数组更改为字符串,并通过传递字符串来运行IN查询。
但我认为这不是有效的方法。所以好好建议其他方法。
我的猜测是,你从另一个表中获得这些用户ID,并且你将它们存储在一个数组中。如果这是正确的,那么你应该改变提取这些用户ID的查询,以便它使用一个连接。
加入将帮助你在那里,因为IN()不是一个良好的编程习惯。 您可以了解到加入这里:http://mysqljoin.com/
我假设你的ID是整数。也许你从其他来源获得这个ID列表,这样在MySQL端的连接不是所需的解决方案。如果是的话,那么找到您的500 Ids列表中存在的最大和最小ID。你可以在PHP端做到这一点。当你有最大值和最小值,然后查询MySQL数据库与where clause
select ...
from table_name
where min_id <= id and id <= max_id
id
是主键这样做的好处是,它已经编入索引。
我已经完成了这个过去,我不确定我的方法是最有效的。
我创建一个字符串对IDS进行:其中id = A或ID = B或ID = C ...
然后我在它前面加select语句,并做了使用fetchall。
我会添加你可以使用这个,通过使字符串“在哪里id(a,b,c,...) – asantaballa
我已经写在我的帖子中,我正在使用IN查询简化了一点。不要重复除此之外,还需要其他建议。 –
你从哪里得到这些用户ID?无法运行连接查询? –
其实我真正的问题是我得到一个fb id和它的fb访问令牌并通过POST参数,然后通过facebook的图形API获取用户朋友的fb ID,然后想要查找所有在我们的数据库中注册的朋友。只是不要让它变得复杂我发布上面的问题。所以不能申请加入。 –