presto 判断数据量是否大于一个比较小的值的优化

问题来源于以下场景:

   我们需要对一张数据表做导出文件操作,需要判断如果数据量不多的时候,直接导出提供下载,如果数据量超过一定数值,则异步处理导出和下载。

这里就引入一个问题,如果我们直接count一张表,当表比较大的时候,太过耗时:

select count(1) from table;// 数据量大的时候速度慢

需要如何优化?

我们根据自己的需求,是不需要知道数据量具体又多少,只是想知道多不多的问题。

这个时候,我们能不能限制下数据长度,假设我们要判断超过5000数据量时异步导出。那么我们先限定数据量为5001,然后再count,避免扫描所以数据。

select count(1) from (select 1 from table limit 5001);

测试发现,效果还是比较不错的。对大数据表,效果很好。

猜你喜欢

转载自www.cnblogs.com/chianquan/p/10258252.html