草庐IT

nonsequential

全部标签

php - 高性能MySQL随机非连续行

我试图从数据不变的表中随机获取一行。我读到有人尝试使用ORDERBYRAND(),这对于大型数据集来说很糟糕,而且扩展性不好。我还看到了让SQL获取最小/最大范围之间的随机行的解决方案,如下所示:FLOOR(MAX(needed_id)*RAND)但这仅在行顺序时有效:1,2,3,4,5,6,7,8,9,10。我需要拉出的数据不是顺序的,例如:1,2,3,4,10,11,12,13所以我认为有两种解决方案:第一个解决方案:继续运行:FLOOR(MAX(needed_id)*RAND)直到我收到一行正确的类型(1/6机会)第二个解决方案:像这样创建一个重复表(因为我的数据永远不会改变):