gpt4 book ai didi

MySQL 查询速度慢

转载 作者:行者123 更新时间:2023-11-29 08:23:18 28 4
gpt4 key购买 nike

我有一个应用程序,可以分析人们在 Facebook 上的点赞,并将其与他们过去几十年可能喜欢的内容进行匹配。

作为优化我们现有匹配的一部分,我存储每个用户喜欢的内容(使用他们的 Facebook ID 的哈希值,以保持匿名)。人们可以多次输入,因此它会多次存储他们的喜好,从而使结果有点偏差。

所以我的user_likes表是这样的:

id  |  page_id   |  user_id_hash
----------------------------------
| |

我目前有大约 820,000 条记录。

目前如果我进行查询:

SELECT page_id, COUNT(*) from user_likes
GROUP BY page_id LIMIT 0,30

这大约需要 8 秒,并且给我一个错误的计数,因为它可以对多次输入的人数进行计数。

我的问题是:

1) 如何加快此查询速度?
2)如何获得更准确的计数?

最佳答案

您可以通过像这样编写查询来获得更准确的计数:

SELECT page_id, COUNT(distinct user_id_hash)
from user_likes ul
GROUP BY page_id LIMIT 0,30;

由于 group by,在 MySQL 中加速它是很棘手的。您可以尝试以下操作。在 user_likes(page_id, user_id_hash) 上创建索引。然后试试这个:

select p.page_id,
(select count(distinct user_id_hash)
from user_likes ul
where ul.page_id = p.page_id
)
from (select distinct page_id
from user_likes ul
) p

此查询背后的想法是避免group by——MySQL 中实现不佳的运算符。内部查询应使用索引来获取唯一 page_id 的列表。 select 中的子查询应使用相同的索引进行计数。通过基于索引的操作,计数应该更快。

关于MySQL 查询速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709887/

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