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

MySQL按字段值排序实现优先级交错输出的慢查询优化问题

性能优化实现方案

你当前使用的自连接计数逻辑时间复杂度为O(n²),数据量达到3万条时计算量会陡增,是查询卡顿的核心原因。可以使用数据库原生窗口函数ROW_NUMBER()实现完全相同的逻辑,时间复杂度可降低到O(n),查询效率会有数量级提升:

SELECT * 
FROM priorities
ORDER BY 
  -- 按优先级分组,同组内按id从小到大生成连续序号
  ROW_NUMBER() OVER (PARTITION BY priority ORDER BY id),
  priority
;

逻辑说明

上述SQL的排序规则和你原有查询完全等价:

  1. 窗口函数会为每个priority分组内的行按id升序生成序号,优先级1的第1条行序号为1,优先级2的第1条行序号也为1,以此类推
  2. 先按序号排序、再按优先级排序,就会按「优先级1第1条→优先级2第1条→优先级3第1条→优先级1第2条→优先级2第2条→优先级3第2条……」的规则输出,完全匹配你需要的轮询输出逻辑。

额外优化建议

你可以额外创建联合索引(priority, id),窗口函数可直接读取索引数据完成计算,无需回表扫描全表,查询速度会进一步提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:24:03