infobright優化-group by 字段在過程再次處理會很耗時

   原SQL,因爲要轉化省份是NULL的情況,在group by  的字段中需要做IFNULL(province_id, 999)

 SELECT 20140311,
         app_id,
         IFNULL(province_id, 999),
         2160101,
         COUNT(DISTINCT imei)
    FROM XXXX a
   WHERE a.op_day_id <= 20140311
     AND a.op_day_id >= DATE_FORMAT(DATE_ADD(20140311, INTERVAL - 29 DAY), '%Y%m%d')
   GROUP BY  app_id, IFNULL(province_id, 999);

執行時間:3分44秒



優化後的SQL,判斷NULL,在load入infobright前處理掉

SELECT 20140311,

              app_id,

         province_id,
         2160101,
         COUNT(DISTINCT imei)
    FROM XXXXX a
   WHERE a.op_day_id <= 20140311
     AND a.op_day_id >= DATE_FORMAT(DATE_ADD(20140311, INTERVAL - 29 DAY), '%Y%m%d')

   GROUP BY  app_id,province_id;


執行時間:44s


結論:infobright的優勢在處理計算彙總,如果過程含有函數處理,相對會慢些

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章