tidb有没有数据抽样方法

【 TiDB 使用环境】生产环境
【 TiDB 版本】5.0.4
【复现路径】做过哪些操作出现的问题
希望对某张表进行抽样,当前有一种方法是


但是这种方法在表稍微大一点时候就很慢,有没有快速抽样方法
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】

用分区表

对某张表随机抽样,不能要求他是什么表吧,好几百张表都要抽样呢

不加order by,只用limit不就行了吗?
加了order by,不但数据不是随机的,排序,性能还是个问题。

可以参考下mysql的使用方式,order by rand()是最慢的实现方式,表越大越慢,
可以试试:
SELECT *
FROM table AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM table)) AS id) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 5;

SELECT * FROM sbtest1 WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM sbtest1 ) ORDER BY id LIMIT 1;—这样取
取10次
如果是PG的话,其实可以用tablesample,oracle可以用sample,但是tidb好像没有这个功能,建议加上

1 个赞

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。