gpt4 book ai didi

mysql - 使用两个参数排序时优化 MySQL 随机性

转载 作者:行者123 更新时间:2023-11-29 22:44:02 26 4
gpt4 key购买 nike

我需要从表中获取一些数据并通过两个参数对它们进行排序。参数之一是 RAND(),因为记录需要是随机的。我有一个很大的数据库,使用 RAND() 会大大降低性能,我想避免它。是否有机会优化随机排序的性能?我需要根据计数(从最低到最高)对结果进行排序,然后需要按随机执行排序。

这是我正在使用的查询

SELECT c.username, IF(s.Broj IS NULL,0,s.Broj) as Ukupno
FROM user AS c
LEFT JOIN (
SELECT username, COUNT(*) AS Broj
FROM odis
GROUP BY username
) AS s
ON c.username = s.username
ORDER BY s.broj ASC, RAND()

最佳答案

我实际上非常怀疑 rand()order by 更能减慢查询速度。但是,您可以将 rand() 放在子查询中,它应该执行相同的操作:

SELECT c.username, coalesce(s.Broj, 0) as Ukupno
FROM user c LEFT JOIN
(SELECT username, COUNT(*) AS Broj, rand() as r
FROM odis
GROUP BY username
) s
ON c.username = s.username
ORDER BY Ukupno ASC, r

请注意,当没有匹配时,r 将具有 NULL 值。对于这个组,排序可能不会像您希望的那样随机。

关于mysql - 使用两个参数排序时优化 MySQL 随机性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208559/

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