gpt4 book ai didi

php - 计算帖子的平均评分

转载 作者:太空宇宙 更新时间:2023-11-03 11:28:33 26 4
gpt4 key购买 nike

我有以下实体:

post_id | post_title | post_body
-------------------------------------
1 | First post | Hello, world!

并想在帖子上注册评级,如下所示:

rating_id | rating_user_id | rating_post_id | rating_rating
1 | 23 | 1 | 3.5

我主要关心/问题是,我应该如何检索帖子的平均评分。我知道我可以使用像这样的 SQL 查询来做到这一点:

SELECT AVG(rating_rating) FROM post_ratings WHERE rating_post_id = 2;

但我每次执行 $post->getAverageRating() 时都必须调用此查询 - 这是一个很大的性能问题吗? (请记住,每个帖子可能有数千个评分)

另一种方法是将平均评分存储在 posts 表的新列中,并让 cron 作业计算平均值或其他什么?

解决这个问题的最佳方法是什么?

最佳答案

这是效率问题

如果这些评分会叠加到很大的数量,最好保存计算出的平均值我会在帖子表中添加 2 列,average_rating,total_ratings

ALTER TABLE posts ADD COLUMN average_rating DECIMAL (9,2);
ALTER TABLE posts ADD COLUMN total_ratings UNSIGNED (9) DEFAULT 0;

并在添加新评级时填充它们,因此您不需要 cron 作业注意计算平均值的查询顺序

MySQL + PHP 代码应该是这样的:

    $query = "UPDATE posts SET total_ratings  = total_ratings + " . $rating_rating . " WHERE post_id = " . $post_id;
$db->query($query);
$query = "UPDATE posts SET average_rating = average_rating * (total_ratings -1 / total_ratings) + " . $rating_rating ." / total_ratings WHERE post_id = " . $post_id;
$db->query($query);

这样你就可以在没有任何 cron 作业的情况下立即更新 posts 表

关于php - 计算帖子的平均评分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51968664/

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