SELECT IN 用于大集合

发布于 2024-09-12 20:20:38 字数 326 浏览 5 评论 0原文

在我的 Web 应用程序中,我想找出系统上已经存在 Twitter 上的哪些用户朋友...目前我正在做的是获取用户正在关注的 Twitter ID 列表(Twitter API 在以下位置返回 ID 5000):一次),并执行:

SELECT userId FROM users WHERE userId IN (COMMA_SEPARATED_LIST_OF_IDs);

我对此查询感到不舒服,因为随着用户表的增长,这可能会成为瓶颈。我也不想过早优化,那么还有其他方法可以做到这一点吗?

更新:我正在使用MySQL。

In my web application, I want to find out which of a user's friends on Twitter are already existing on the system... Currently what I am doing is getting the list of Twitter IDs the user is following (Twitter API returns the IDs 5000 at a time), and doing:

SELECT userId FROM users WHERE userId IN (COMMA_SEPARATED_LIST_OF_IDs);

I don't feel comfortable about this query, because as the users table grows, this might prove to be a bottle neck. I don't want to optimize prematurely either, so is there any other way I should be doing this?

Update: I am using MySQL.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

守望孤独 2024-09-19 20:20:38

两种方法:

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

  2. 使用联接。

Two approaches:

  1. SELECT IN (expr) is able to have a SELECT expression for expr. I.e. the database can handle a large amount of data here.

  2. Use a join.

橘味果▽酱 2024-09-19 20:20:38

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

You could create a new table, and begin storing all of the twitter id's that your users are following. Then, determining who is already in your system would be a simple join on indexed columns. You can use the Twitter API to load and update that table at your discretion.

无法回应 2024-09-19 20:20:38

我假设 users.userId 是您的主键。如果是这样,它就已经被索引了,所以查找应该已经是高效的了。您是否预计您的 COMMA_SEPARATED_LIST_OF_IDS 会超出合理范围增长?

I'm assuming that users.userId is your primary key. If so, it will already be indexed, so the lookup should already be efficient. Do you expect that your COMMA_SEPARATED_LIST_OF_IDS will grow beyond reason?

╰つ倒转 2024-09-19 20:20:38

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

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

You can use the EXISTS function if this is Transact SQL. I'm not sure if EXISTS works in other databases because I only work in SQL Server.

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文