gpt4 book ai didi

php - 如何优化代码以选择有限数量的项目

转载 作者:行者123 更新时间:2023-11-29 11:40:00 25 4
gpt4 key购买 nike

有一个数据库包含两个对此任务很重要的表:

  • items,包含与网页上显示的项目相关的所有数据
  • views 保存这些项目的浏览次数

任务是检索浏览次数最多的 50 个项目,然后随机显示其中的 10 个。当前的解决方案似乎有点无效,因为它从数据库中检索这 50 个项目的完整信息,只是为了打乱结果,显示其中的前 10 个并丢弃其余的。有没有更有效的方法来处理这个问题,最好是通过优化数据库查询?

$query  = "SELECT items.*, (SELECT items_views.views FROM items_views WHERE items_views.item = items.id) as views FROM items ORDER BY views DESC LIMIT 0, 50";
$result = mysqli_query($conn, $query);

$final_array = array();
while($row = mysqli_fetch_assoc($result)) {
$final_array[] = $row;
}

if(is_array($final_array)) {
$amount_to_display = 10;
$result_count = 0;

shuffle($final_array);

foreach($final_array as $final_row) {
// display the results here
if (++$result_count >= $amount_to_display) break;
}
}

最佳答案

首先,您可以从两个表中选择数据,而无需对 View 使用第二个SELECT。最重要的是,您可以应用带有 LIMIT 10 和随机顺序的第二个 SELECT:

$query = "(SELECT
i.*, iv.views
FROM
items i
LEFT JOIN items_views iv ON iv.item = i.id
ORDER BY
iv.views DESC
LIMIT 0, 50)
ORDER BY RAND() LIMIT 0, 10";

这种方法将节省任何额外的 PHP 逻辑。

关于php - 如何优化代码以选择有限数量的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35958256/

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