我的数据库中有一个大表(可能有数百万条记录),我需要选择 #X 个随机行(假设 #X 在 10 到 50 之间),但我需要这个查询尽可能优化。
该表如下所示:
CREATE TABLE sample (
id bigint auto_increment PRIMARY KEY,
user_id bigint NOT NULL,
screen_name VARCHAR NOT NULL,
...
);
我四处寻找,我找到了这样的答案:
SELECT * FROM sample ORDER BY RAND() limit X.
但在我看来,这将获取完整的表格然后对其进行排序,不是吗?
我认为最好生成 10 或 50 个随机整数并执行select * from sample where rowid in (<random integer list>)
. 但是 afaik,H2 中缺少 rowid 概念,所以我可能会选择在我的表中使用 ID 列。
如果我能用一个 SQL 查询来完成这项任务,那就太棒了。
有更好的建议吗?