解决方案 »

  1.   

    提供下执行计划吧,需要先看看具体是哪里慢
    个人感觉你里面有好多的select count(1),这么些基本都花搜索全表的
    如果t_mail_box表很大的话,这个时间消耗应该是最大的
      

  2.   

    每天半夜定时执行,您说的有道理,那要怎么才能提高count速度?用索引?
      

  3.   

                              select ...
                                 from t_mail_box
                                where t_mail_box.take_time > t2.pre_time
                                  and t_mail_box.take_time <= count_datetime
                                  and t_mail_box.take_time > t_terminal.start_time
                                  and t_mail_box.terminal_no = t_terminal.terminal_no
                                  ...
    这样的片段出现了很多次,所以觉得应该给t_mail_box加上(take_time, terninal_no)的联合索引
    另外,同样因为这样的片段出现了很多次,所以觉得可以把
    (select * from 
                                 from t_mail_box
                                where t_mail_box.take_time > t2.pre_time
                                  and t_mail_box.take_time <= count_datetime
                                  and t_mail_box.take_time > t_terminal.start_time
                                  and t_mail_box.terminal_no = t_terminal.terminal_no
    )
    提出来作为虚表使用,正如LZ代码里面写的一样,只不过再多一层