1. 程式人生 > >presto 判斷資料量是否大於一個比較小的值的優化

presto 判斷資料量是否大於一個比較小的值的優化

問題來源於以下場景:

   我們需要對一張資料表做匯出檔案操作,需要判斷如果資料量不多的時候,直接匯出提供下載,如果資料量超過一定數值,則非同步處理匯出和下載。

 

這裡就引入一個問題,如果我們直接count一張表,當表比較大的時候,太過耗時:

select count(1) from table;// 資料量大的時候速度慢

需要如何優化?

 

我們根據自己的需求,是不需要知道資料量具體又多少,只是想知道多不多的問題。

這個時候,我們能不能限制下資料長度,假設我們要判斷超過5000資料量時非同步匯出。那麼我們先限定資料量為5001,然後再count,避免掃描所以資料。

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

測試發現,效果還是比較不錯的。對大資料表,效果很好。