几百万数据每次获取一个随机数据 我查询有用 oder_by(?) 还有获得范围内主键 id ,做 random ,但是由于我删除过很多数据,导致主键 id 并不连续,请问这个怎么处理 或者还有什么更好的方法
1
Herobs 2022-05-01 11:19:16 +08:00 via iPhone
Postgres 支持 table sample
|
2
kran 2022-05-01 12:18:35 +08:00 via Android 2
id = random(0, max_pk)
select where pk >= #id limit 1 |
3
elboble 2022-05-01 13:22:11 +08:00
'''
num = 1 ret = MONGO_DB[db.lower()].aggregate([{"$sample": {"size": num}}]) ''' 效率高不高不知道了。 |
4
disk 2022-05-01 14:35:56 +08:00
.raw(sql) 用 tablesmaple
|
5
yonng 2022-05-01 14:36:16 +08:00
多生成几个随机主键一次查询返回(主键有索引查询应该比较快),降低获取不到数据的可能性。极端情况下一条都没有返回那就再查一次,比如直接 limit 10 然后从 10 条里随机选一条好了
|