gpt4 book ai didi

php - 巨大的帖子状态表,从前 100 名中随机选择

转载 作者:行者123 更新时间:2023-11-30 23:23:55 26 4
gpt4 key购买 nike

我有一个表格,其中包含职位状态。表列是:

ID        //which is unique incremental
Post_id //liked post
user_id //user who gave like or dislike
type //"1","0" or "2" which stands for Liked, neutral or disliked.

这里是示例数据

+--------+---------+---------+------+
| id | post_id | user_id | type |
+--------+---------+---------+------+
| 938300 | 347298 | 661 | 0 |
| 938299 | 346185 | 0 | 1 |
| 938298 | 347286 | 2645 | 0 |
| 938297 | 346924 | 374 | 1 |
| 938296 | 347261 | 1523 | 1 |
| 938295 | 347313 | 3233 | 1 |
| 938294 | 346323 | 1375 | 1 |
| 938293 | 347022 | 1779 | 1 |
| 938292 | 347278 | 2645 | 1 |
| 938291 | 347300 | 109 | 1 |
+--------+---------+---------+------+
10 rows in set (0.01 sec)

然而这个查询运行完美,但是你们可以看到这个表中有数百个数据。我需要的是:

SELECT post_id, 
count(post_id)
FROM 'table'
WHERE type = '1'
GROUP BY post_id
ORDER BY count(post_id)
LIMIT 300;

此查询选择最喜欢的 300 个帖子,php 代码从中随机选择一个。但是,此查询进行了全表扫描,持续时间超过 5 秒。我怎样才能加快速度或者我是否必须更改表格方案?

最佳答案

您可以通过使用索引获得一些加速。您的查询在计算方面是昂贵的,因此缓存可能是更好的答案。看看拥有这两个索引中的一个或两个是否对您的表有帮助:

CREATE INDEX post_id_index ON `table` (post_id);
CREATE INDEX type_index ON `table` (type);

如果没有则删除它们:

DROP INDEX post_id_index ON `table`;
DROP INDEX type_index ON `table`;

如果它们无济于事,请务必将其丢弃,但请事先尝试几次以确保万无一失。如果缓存不适合您,另一种选择是保留该结果的另一个表。我认为这可能已经被建议过了。我建议使用索引,因为创建它们非常容易。只需将每个命令作为完整的 SQL 命令运行,然后查看相关查询是否更快。以下是有关索引的更多信息:

http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html

关于php - 巨大的帖子状态表,从前 100 名中随机选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14266963/

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