场景:最近在实现一个scheduled task,其中用到一个sql查询相关数据,查询逻辑只是简单将A和B left join,但是在prob环境运行超级久都成功不了。
分析:从日志看以为是输出的数据量太大,资源紧张导致运行时间太久,后来发现是因为在查询A时,对其中的date字段筛选使用的是date = select max(date) from A,起初这样写因为A的生产时间不确定,为了保证自己任务定时能跑并且数据不为空,但是A是一个超级大的表,查询 date = select max(date) from A就很吃力
结论:慎用 select max(date) from A 这种,除非确定不会占用很多查询资源,可以退而求其次,使用CURRENT_DATE - INTERVAL ‘2’ day代替CURRENT_DATE - INTERVAL ‘1’ day