SELECT IN表示大型集合

时间:2010-08-04 17:00:17

标签: sql select

在我的网络应用程序中,我想知道Twitter上哪些用户的朋友已经存在于系统中......目前我正在做的是获取用户正在关注的Twitter ID列表(Twitter API返回每次ID 5000),并且:

SELECT userId FROM users WHERE userId IN (COMMA_SEPARATED_LIST_OF_IDs);

我对这个查询感到不舒服,因为随着用户表的增长,这可能会成为瓶颈。我也不想过早地进行优化,那么我应该采取其他任何方式吗?

更新:我正在使用MySQL。

4 个答案:

答案 0 :(得分:3)

两种方法:

  1. SELECT IN (expr)能够为SELECT设置expr表达式。即数据库可以在这里处理大量数据。

  2. 使用联接。

答案 1 :(得分:2)

您可以创建一个新表,并开始存储您的用户所关注的所有Twitter ID。然后,确定谁已经在您的系统中将是索引列上的简单连接。您可以自行决定使用Twitter API加载和更新该表。

答案 2 :(得分:1)

我假设users.userId是您的主键。如果是这样,它将已被索引,因此查找应该已经很有效。您是否期望您的COMMA_SEPARATED_LIST_OF_IDS超出理由?

答案 3 :(得分:0)

如果这是Transact SQL,您可以使用EXISTS函数。我不确定EXISTS是否适用于其他数据库,因为我只在SQL Server中工作。

http://msdn.microsoft.com/en-us/library/ms188336.aspx