我建立一个网站,我需要从数据库中选择随机加权记录 。大数据库快速mysql随机加权选择
还有就是代码SQL : select one row randomly, but taking into account a weight
SELECT t.*, RAND() * t.weight AS w
FROM table t
ORDER BY w DESC
LIMIT 1
它适用于记录小样本罚款文档片断。
尝试接近100万条记录时,它在本地机器上变慢(1.3 - 1.8秒) ,我想我会在更大的机器上花费更长的时间。
它如何优化? 有没有更好的方法随机选择加权记录?
我的尝试是定期计算权重,将它们存储在单独的表中,选择随机数programmaticaly并搜索最接近该记录的记录。