这个是视图,里面的D00_06是员工表,因为有许多字段都是员工比如fzr负责人,tbr填表人,jcr检查人等等,总觉得这样的表结构不够好,而且目前已经有1w多数据,每月2、3千条增长,现在从视图中select全部要9秒左右,该怎么优化呢?

解决方案 »

  1.   

    alter view V_TEST
    as
    select ID,....,(select ygxm from d00_06 where ygno=fzr) as fzrxm,....
    from D04_11这样速度应该更快
      

  2.   

    不管是什么负责人、填表人还是检查人,都是员工,都关联员工表显示就是了,要分那么多小表干嘛?
    另外才几万条select就要9秒了?检查下索引设置,检查下是否优化了查询代码?如果查询本身很复杂,就别搞视图了,还不如直接查询基表呢
      

  3.   

    这里确实是在建视图,那些小表是join的时候虚拟的,现在是希望先建一个包含工号姓名等全部信息的视图,然后再在视图里查询,所以感觉是不是视图应该优化一下?直接用2楼的那种还是join哪个更快呢?另外索引要怎么设置?
      

  4.   

    聚集索引 ygno 这个,2楼方法试试 
      

  5.   


    其实不一定全部要关联的,做erp经常会用到什么制单人,审核人之类不重要的人名,你可以直接将用户姓名取来存在那个单据里呀,不一定要把id存在单据里再去关联,意义不大,除非非常重的!
      

  6.   

    ygno本身是D00_06表的主键,已经是聚集索引了,2楼的方法试了,速度好像差不多(9秒那个时间是查询全部记录的,有where id=9之类的时候还是挺快的1秒左右。