CREATE proc search_SO
@star_time varchar(40),
@end_time varchar(40),
@custom varchar(30)
as
select distinct account,rec_date,datename(weekday,rec_date)weeks,rh.so_no,(length*width*height*ctns) as tiji  
into #so from rechead rh inner join recdtl rd on rh.so_no=rd.so_no where rec_date>=@star_time and rec_date<@end_time and account like @custom+'%'select distinct b.account,Vehicleid,b.so_no,b.rec_date,b.weeks,sum(tiji/1000000)tiji,supplier from
(select a.account,rec_date,weeks,a.so_no,rec_no,a.tiji from
#so a
left join in2so so on a.so_no=so.so_no)b left join inhead ih on b.rec_no=ih.rec_no 
group by b.account,Vehicleid,b.so_no,b.rec_date,b.weeks,supplier以上查询我是通过临时表查询,但是太慢了,像这样表嵌套表的查询有什么方法可以优化一下,让速度再快一点呢,还有,一些日期截取,还有时期转星期.....等这些函数转换是不是也会影响到速度呢?

解决方案 »

  1.   

    你子查询的LEFT JOIN完全可以拿到外面来啊。还有你已经group by 了 就不需要再DISTINCT了 这样的效率比较低。
      

  2.   

    你子查询的LEFT JOIN完全可以拿到外面来啊????这是什么意思呀!
      

  3.   

    ---TRY
    select
     a.account,a.rec_date,a.weeks,a.a.so_no,a.tiji,sum(a.tiji/1000000)tiji,so.supplier 
    from
     #so a
    left join
     in2so so 
    on
     a.so_no=so.so_no 
    left join
     inhead ih on a.rec_no=ih.rec_no  
    group by
     a.account,a.so_no,a.rec_date,a.weeks,so.supplier
      

  4.   

    没分了,借个位置求帮助。
    如何将数据库正文字段中 <p ******> 这样的html标记批量替换为 <p>  去掉其中的样式说明 ***** 内容不是固定格式(如<p class=""> <p id=***> <p class=**> <p id=54>等等)求能批量操作示例的语句。