user_default_avatar
表中共有 1000 条数据,但查询的结果永远都是大于 500 而非在 500 左右浮动?
select count(0)
from user_default_avatar
where id >= ((select max(id)
from user_default_avatar)
- (select min(id)
from user_default_avatar))
* rand()
+ (select min(id)
from user_default_avatar);
不清楚 sql
函数发生了什么,有人知道是怎么回事么?
id 的策略使用的是 twitter 的 雪花算法 自动生成,算是自增长吧
之前直接用 rand()
被罵慘了
select *
from user_default_avatar
order by rand()
limit 100;
好吧,实际上是和数据的 id 分布密度有关系,后面较大的数字分布密度大的话就会造成数量大于 1/2 的情况