inhos_oareport和clinic_oareport数据分别有n百万条

解决方案 »

  1.   

    自己在查询分析器中用ctrl + L来分析你的语句不就可以了,不过库要连真实的库,这样才能给出你真实的信息,比如优化索引,优化查询条件什么的,光在这里说是没用的,没你的真实环境也无从优化,所以还是要你自己动手,呵呵
      

  2.   

    把你經常要order by 的那些字段建上索引
      

  3.   

    另建議你改一下表結構﹕
    將表结构
    depid  depname  itemid itemname totalmoney reportdate docid  docname 
    部门id 部门名称  项目id 项目名称  收入       日期       医生id  医生姓名分成四個表表1:
    depid  depname     
    部门id 部门名称
    表2:
    itemid itemname   
    项目id 项目名称
    表3:
    docid  docname 
    医生id  医生姓名
    表4:
    depid   itemid   totalmoney reportdate docid    
    部门id   项目id    收入       日期       医生id   
    查詢時再關聯四個表就行了
      

  4.   

    我感觉慢的原因还有一个就是执行了多此查询所以多次访问了数据库
    哪位大侠能帮我把结果写到一句sql里吗?
      

  5.   

    其實rockyljt(Rocky)說的表結構,符合关系数据库的规范.呵呵
      

  6.   

    第一:order by 字段建Index ,第二:在没有必要的时候最好不要用order by 特别不要order by  DESC 因为Order by 是一条条记录比较的,
      

  7.   

    没有必要的时候最好不要用order by
      

  8.   

    select a.OperDep,b.depname,a.sortid,(case when a.sortid=2 then '西药费'  when a.sortid=3 then '中药费'
    else '草药费' end),sum(a.totalmoney),feetime,a.docid,c.opername
    from inhosfees a,dep_table b,opertable c
    where a.OperDep=b.depid and a.sortid in (2,3,4) and a.Docid=c.operid
    group by a.OperDep,b.depname,a.sortid,a.docid,c.opername
    想选feetime又不group by feetime怎么办
      

  9.   

    select a.OperDep,b.depname,a.sortid,(case when a.sortid=2 then '西药费'  when a.sortid=3 then '中药费'
    else '草药费' end),sum(a.totalmoney),convert(char(10),feetime,20),a.docid,c.opername
    from inhosfees a,dep_table b,opertable c
    where a.OperDep=b.depid and a.sortid in (2,3,4) and a.Docid=c.operid
    group by a.OperDep,b.depname,a.sortid,a.docid,c.opername,convert(char(10),feetime,20)