gpt4 book ai didi

mysql - 如何从 SQL 查询中获取随机行?

转载 作者:太空宇宙 更新时间:2023-11-03 11:22:43 24 4
gpt4 key购买 nike

我想知道如何在 SQL 查询中获取随机行,因为完整的查询有超过 100 亿行并且会炸毁我们的服务器。

如何查询在此查询结构中采样的子集?

SELECT 
a,b,c
FROM test
WHERE
test.a= 123
AND test.b ILIKE '10008383825311900000'
LIMIT 1000000

最佳答案

规范的答案是排序并使用limit:

select t.*
from t
order by rand()
limit 100;

但不要这样做!而是在 where 子句中使用 rand()。对于 1% 的样本:

select t.*
from t
where rand() < 0.01;

MySQL 中的随机抽样方法往往需要扫描整个表,这在您的情况下会很昂贵。

编辑:

为了优化您的查询,我将从使用 = 而不是 ILIKE 开始:

SELECT a, b, c
FROM test
WHERE test.a = 123 AND
test.b = '10008383825311900000'
LIMIT 1000000;

你想要一个关于 test(a, b, c) 的索引。

关于mysql - 如何从 SQL 查询中获取随机行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57916911/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com