Postgresql 从表中选择单个随机行的最佳方法

Postgresql 从表中选择单个随机行的最佳方法,postgresql,Postgresql,我尝试了这里建议的方法: 创建或替换函数任何用户返回JSONB作为$$ 以j_ret为例 从用户选择* 其中昵称如“test%”和random

我尝试了这里建议的方法:

创建或替换函数任何用户返回JSONB作为$$ 以j_ret为例 从用户选择* 其中昵称如“test%”和random<0.2限制1 从j_ret中选择to_jsonbj_ret; $$语言“sql”;
但是,当表很小时,它偶尔会返回null。仅返回一个随机单行的最佳方法是什么?

这与表大小无关:

SELECT * FROM "User"
WHERE "nickname" LIKE 'test%'
ORDER BY random()
LIMIT 1

什么是最好的取决于你为了表现愿意做出什么样的妥协。S-mans的答案不会很快,但它几乎是万无一失的。