首页 > 解决方案 > 根据字段值对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 和优先级有主要的看法。仍然查询很慢。

标签: mysql

解决方案


优先级字段上的索引会有所帮助。按此顺序排列优先级和 id 的两列索引将更有帮助。


推荐阅读