这种写法不知效率如何?请高手指教!
select 住院科室,摘要,sum(金额) je  from mxz_cy where 记帐类型<>'交款'
and 住院号+convert(char(10),入院日期) in( select 住院号+convert(char(10),入院日期) from brda_cy where  日期 >'2004-01-01')
 group by 住院科室,摘要 

解决方案 »

  1.   

    <>效率不好
    两个convert转换效率不高,用多个语句试试
      

  2.   

    还有这样写,不过好像有问题
    select 住院科室,摘要,sum(金额) je  from mxz_cy where 记帐类型<>'交款'
    and 住院号 in( select 住院号 from brda_cy where  日期 >'2004-01-01')
    and 入院日期 in( select 入院日期 from brda_cy where  日期 >'2004-01-01')
     group by 住院科室,摘要 
      

  3.   

    select m.住院科室,摘要,sum(金额) je  from mxz_cy as m inner join brda_cy 
    as b on 记帐类型<>'交款'
    and b.日期>'2004-01-01'
    and m.住院号=b.住院号
    and m.入院日期=b.入院日期
     group by m.住院科室,摘要 
      

  4.   

    ksrsoft你第一种写法效率应该是比较高的。如果能够换掉'<>'关系,使用其他的命令,在通过建立索引效果估计会更好。(比较苛求了!)你的限制条件是4条语句,所以前后放置的位置并不重要,SQL SERVER会自动判断!
     ksrsoft你另外的几种写法效率比第一种差多了,追求效率的话尽量别用子查询,IN等语句,子查询的效率比直接的表关联效果差多了!另外,from a inner join b on ...和from a,b where效率是一样的。
    使用别名好象也提高不了性能,不过这个没有具体测试过。
      

  5.   

    谢谢pjy(古虫)
    我查了许多资料,得知子查询效果不高!
    结帐!