Mariadb 如何选择mb中的随机行

Mariadb 如何选择mb中的随机行,mariadb,Mariadb,从tbl ORDER BY RAND()LIMIT 10中选择col1 这可以很好地用于小桌子。然而,对于大表,它将有一个严重的性能问题,因为为了生成随机行列表,MySQL需要为每一行分配随机数,然后对它们进行排序。 即使您只需要从一组100k行中随机抽取10行,MySQL也需要对所有100k行进行排序,然后只提取其中的10行 我对这个问题的解决方案是在WHERE子句中使用RAND,而不是在orderby子句中使用RAND。首先,需要从表中的总行数计算所需结果集行数的片段。第二,在WHERE子句

从tbl ORDER BY RAND()LIMIT 10中选择col1

这可以很好地用于小桌子。然而,对于大表,它将有一个严重的性能问题,因为为了生成随机行列表,MySQL需要为每一行分配随机数,然后对它们进行排序。 即使您只需要从一组100k行中随机抽取10行,MySQL也需要对所有100k行进行排序,然后只提取其中的10行


我对这个问题的解决方案是在WHERE子句中使用RAND,而不是在orderby子句中使用RAND。首先,需要从表中的总行数计算所需结果集行数的片段。第二,在WHERE子句中使用该片段,只要求该片段中最小(或相等)的随机数。

从tbl中选择col1,其中RAND()例如,假设您有一个包含200K行的表,并且您只需要该表中的100个随机行。来自总行的结果集片段为:100/200k=0.0005。如果要使用任何join语句和where filter,可以使用v b vb