You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按近10分钟文章浏览量从高到低排序MySQL文章列表

解决方案:按近10分钟浏览量排序文章列表

嘿,这个需求其实很好实现,核心就是通过关联两张表统计近10分钟的浏览次数,再按次数降序排列就行。我给你整理了完整的SQL查询和优化建议:

核心SQL查询

SELECT 
    a.article_id,
    a.title, -- 替换成你articles表中实际的标题字段
    a.article_url, -- 替换成你存储文章链接的字段
    COUNT(v.id) AS recent_views
FROM 
    articles a
LEFT JOIN 
    views v ON a.article_id = v.article_id
WHERE 
    v.timestamp >= NOW() - INTERVAL 10 MINUTE
GROUP BY 
    a.article_id, a.title, a.article_url
ORDER BY 
    recent_views DESC, a.publish_time DESC; -- 浏览量相同时,可按发布时间降序,按需调整

关键部分解释

  • LEFT JOIN 关联表:用左连接是为了保证近10分钟没被浏览的文章也能出现在列表里(此时recent_views为0),如果只想要有浏览量的文章,换成INNER JOIN即可。
  • 时间筛选逻辑:NOW() - INTERVAL 10 MINUTE会自动计算当前时间往前推10分钟的节点,精准筛选这段时间内的浏览记录。
  • 分组统计:按文章的唯一标识和需要展示的字段分组,用COUNT(v.id)统计每篇文章的近10分钟浏览量。
  • 排序规则:先按recent_views降序,确保浏览量最高的文章排在最前面;后面的排序条件可以根据你的业务需求调整(比如文章发布时间、ID等)。

性能优化建议

如果你的views表数据量较大,为了避免查询变慢,建议给views表建立联合索引:

CREATE INDEX idx_views_article_timestamp ON views(article_id, timestamp);

这个索引能让MySQL快速定位到指定文章的近10分钟记录,避免全表扫描,大幅提升查询效率。另外,定期清理views表中的旧数据(比如超过7天的记录),也能持续维持查询性能。

内容的提问来源于stack exchange,提问作者Richard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 03:36:35