从大型mysql表中选择随机行的快速方法是什么?
我正在使用 php,但我对任何解决方案感兴趣,即使它是另一种语言。
最佳答案
获取所有 id,从中随机选择一个,然后检索整行。
如果您知道 id 是连续的,没有孔,您可以只获取最大值并计算随机 id。
如果这里和那里都有漏洞,但主要是连续值,并且您不关心稍微偏斜的随机性,请获取最大值,计算 id,然后选择 id 等于或高于您计算的 id 的第一行。倾斜的原因是,跟在这些洞后面的 id 比跟在另一个 id 后面的那些有更高的机会被选中。
如果您随机订购,您手上的表格扫描会很糟糕,而且快速这个词不适用于这样的解决方案。
不要那样做,也不应该按 GUID 订购,它也有同样的问题。
关于mysql - 从mysql的大表中快速选择随机行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/211329/