2013-09-25 147 views
4

我有一个有100万行的表。它具有用户标识作为其主键。我有一个有500个用户ID的数组。从mysql数据库中获取几百条记录

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

但我认为这不是有效的方法。所以好好建议其他方法。

+3

你从哪里得到这些用户ID?无法运行连接查询? –

+0

其实我真正的问题是我得到一个fb id和它的fb访问令牌并通过POST参数,然后通过facebook的图形API获取用户朋友的fb ID,然后想要查找所有在我们的数据库中注册的朋友。只是不要让它变得复杂我发布上面的问题。所以不能申请加入。 –

回答

0

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

-1

加入将帮助你在那里,因为IN()不是一个良好的编程习惯。 您可以了解到加入这里:http://mysqljoin.com/

1

我假设你的ID是整数。也许你从其他来源获得这个ID列表,这样在MySQL端的连接不是所需的解决方案。如果是的话,那么找到您的500 Ids列表中存在的最大和最小ID。你可以在PHP端做到这一点。当你有最大值和最小值,然后查询MySQL数据库与where clause

select ... 
    from table_name 
    where min_id <= id and id <= max_id 

id是主键这样做的好处是,它已经编入索引。

1

我已经完成了这个过去,我不确定我的方法是最有效的。

我创建一个字符串对IDS进行:其中id = A或ID = B或ID = C ...

然后我在它前面加select语句,并做了使用fetchall。

+0

我会添加你可以使用这个,通过使字符串“在哪里id(a,b,c,...) – asantaballa

+0

我已经写在我的帖子中,我正在使用IN查询简化了一点。不要重复除此之外,还需要其他建议。 –

相关问题