mysql - 根据字段值对mysql数据进行排序
问题描述
这是我的查询
SELECT p1.*, COUNT(p2.id) AS before_me_same_priority
FROM priorities AS p1
LEFT JOIN priorities AS p2 ON p1.priority = p2.priority AND p1.id > p2.id
GROUP BY p1.id
ORDER BY before_me_same_priority, priority
;
我想要实现的是: 我需要的是一个优先级为 1 的数据,然后是一个优先级为 2 的数据,然后是优先级 3,然后当没有更多具有任何其他优先级的数据时,它应该再次作为优先级 1 和 2 重复,并且3等等等等等等。
上面的查询很完美,但是因为我在表中有超过 30k 的数据,所以查询会在 10-15 分钟内卡住并加载。我们可以更快地做一些事情吗?
期望的
我对 ID 和优先级有主要的看法。仍然查询很慢。
解决方案
优先级字段上的索引会有所帮助。按此顺序排列优先级和 id 的两列索引将更有帮助。
推荐阅读
- wordpress - 在 Wordpress 自定义帖子类型循环中使用 ACF 分类字段作为变量
- android - 根据子值对firebase数据库进行排序
- javascript - IIFE 和常规函数的区别(示例)
- python - 为什么 0.0 == False 在 Python 中返回 True?
- heroku - 使用什么服务来部署我的烧瓶 + dash 应用程序
- ios - PropertyList 解码器解码返回 nil
- apache-spark - 如何在数据块中使用 Spark sql 连接 Spark 数据框列
- javascript - React.js TypeError: Object(...) is not a function
- haskell - 理解简单 Reader monad 的 do 表示法:a <- (*2), b <- (+10), return (a+b)
- dialogflow-es - 谷歌助理每 5-10 分钟就有新用户