解决方案 »

  1.   

    两个问题:
    Kq_temp 的表结构如何, 此表与kq_person 关联可能是査询效率低的原因之一.函数 dbo.getdata() 的作用能否通过表关联来实现?  此函数放在 WHERE 里面是查询效率低的原因之二.
      

  2.   

    select b.id,b.tname,b.tcode,dbo.getdata(b.tdept),a.days
    from kq_temp a,kq_person b
    where 1=1 and b.tstate in ('在职') and b.tdept!=19 and dbo.getdata(b.tdept) in ('生产部员工','品质部员工','工程部员工','仓管部员工')先把这个查询计划研究下 
      

  3.   

    如果你的b.tdept有索引,但是外面用了函数的话,索引就失效了,
    还有你怎么join的时候用 1=1 啊,这笛卡尔积之后的数据可大了
      

  4.   

    left join kq_person b on 1=1
    what does this mean? 1 always eaqual 1.
      

  5.   

    1.
    kq_temp a  left join kq_person b on 1=1
    没有关联2.
     b.tdept!=19 and dbo.getdata(b.tdept)
    这两个条件,都是不走 IX 的。3.最好有执行计划。
      

  6.   


    select b.id,b.tname,b.tcode,tdept,case when c.tworktype='33' then '白班' when c.tworktype='34' then '晚班' else '未知' end  ,a.days,d.tgroup1
     from kq_temp a 
     left join 
    (
    select id,tname,tcode,dbo.getdata(tdept) tdept from kq_person
    where tstate in ('在职') and tdept!=19 and dbo.getdata(tdept) in ('生产部员工','品质部员工','工程部员工','仓管部员工')
    ) b on 1=1
     left join kq_worktype c on a.days=c.tdate and b.id=c.tperson_id
     left join kq_personadd d on b.id=d.tperson_id
      

  7.   

    请问kq_temp表和kq_person表的关联条件为何是1=1?
    这样的数据量是庞大的喔.