在我的网络应用程序中,我想知道Twitter上哪些用户的朋友已经存在于系统中......目前我正在做的是获取用户正在关注的Twitter ID列表(Twitter API返回每次ID 5000),并且:
SELECT userId FROM users WHERE userId IN (COMMA_SEPARATED_LIST_OF_IDs);
我对这个查询感到不舒服,因为随着用户表的增长,这可能会成为瓶颈。我也不想过早地进行优化,那么我应该采取其他任何方式吗?
更新:我正在使用MySQL。
答案 0 :(得分:3)
两种方法:
SELECT IN (expr)
能够为SELECT
设置expr
表达式。即数据库可以在这里处理大量数据。
使用联接。
答案 1 :(得分:2)
您可以创建一个新表,并开始存储您的用户所关注的所有Twitter ID。然后,确定谁已经在您的系统中将是索引列上的简单连接。您可以自行决定使用Twitter API加载和更新该表。
答案 2 :(得分:1)
我假设users.userId是您的主键。如果是这样,它将已被索引,因此查找应该已经很有效。您是否期望您的COMMA_SEPARATED_LIST_OF_IDS超出理由?
答案 3 :(得分:0)
如果这是Transact SQL,您可以使用EXISTS函数。我不确定EXISTS是否适用于其他数据库,因为我只在SQL Server中工作。