【发布时间】:2023-04-03 09:47:01
【问题描述】:
我有一个 MySQL 表,其中有一个名为 cur_odds 的行,它是一个百分比数字,表示该行将被选中的百分比概率。例如,当您运行 100 个查询时,如何进行查询以大约以该频率实际选择行?
我尝试了以下方法,但概率为 0.35 的行最终在大约 60-70% 的时间内被选中。
SELECT * FROM table ORDER BY RAND()*cur_odds DESC
表中所有cur_odds的值加起来正好是1。
【问题讨论】:
-
ORDER BY RAND() 对于大型数据集可能非常慢,因为它是 O(n log(n))。您的表格将有多少行?
标签: mysql probability