gpt4 book ai didi

MySQL 性能问题 - 很多 O'Ring

转载 作者:搜寻专家 更新时间:2023-10-30 23:24:20 24 4
gpt4 key购买 nike

Facebook API 有一个调用 $facebook->api_client->friends_getAppUsers();并返回正在使用该应用的用户的好友 ID。

现在假设我想从我的数据库表中选择匹配所有那些 friend ID 的所有行。

我能想到的唯一方法是

SELECT * FROM my_table WHERE uid IN(friend1, friend2, friend3, friend4 ... friend100);

但是这个 SELECT 会不会让人望而却步,性能明智?还有另一种方法可以达到同样的目的吗?这在 Facebook 应用程序中应该是很常见的事情。

如果您查看 Causes 应用程序,它可以让您看到 friend 的 Causes。我猜应用程序必须从 Causes 表中挑选出与所有用户 ID 匹配的所有行。

我是不是用错了方法?

最佳答案

如果您在 uid 上没有索引,查询分析器将对 my_table 进行表扫描并根据 friend 列表测试每一行(将其视为级联的 if 语句在每一行上执行)。所以它的成本大约为:

SELECT * FROM my_table;

现在,如果您在 uid 上创建索引,如果要测试的 friend 集相对较大,查询分析器可能仍会进行表扫描。如果列表中的好友比较少,可以通过uid单独查找。在真实数据集上运行一些实验,看看会发生什么。您可以通过在查询前加上 EXPLAIN 向 MySQL 询问任何查询计划。

关于MySQL 性能问题 - 很多 O'Ring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1814988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com