进港标示   和  出港标示   放在一个字段里就可以了,InOrOut   0为进,1为出
你的查询都比较单纯没啥好优化的
实在数据量大就对表做时间切割,按年,按季度,按月,按周,按日 根据你的数据量做一个符合你性能需求的切割方式
至于大型报表太慢怎么办的话,可以考虑做汇总表,每个周期产生汇总,反正你的数据应该不会有修改历史数据的需求,使用汇总表输出大时间跨度需求正好

解决方案 »

  1.   

    我本来想用CASE来区分,但是发现涉及的字段都必须写在GROUP BY 后面,还是不行
      

  2.   

    其实这个SQL不难,就是需要得出的项比较多,问题中只是需要统计的一部分
    我就是看着这么多的语句,总想能精简一下
      

  3.   

    70W数据3秒肯定是慢了,请适当添加索引
    建议使用
    set statistics io on 
    set statistics time on 
    来看看实际的资源消耗更为准确对0,1两种单纯的做group by效果并不好
    最好贴出你现有语句,我们来看看有没有可以改动的地方