SELECT COUNT(*) AS TOTAL,
       org_id OrgId,
       TO_CHAR(END_TIME, 'yyyy-mm') AS YM
  FROM SEHR_V_XMAN_EVENT_TOTAL
 WHERE TYPE = 1
   AND org_id = :OrgId
  AND TO_CHAR(END_TIME, 'yyyy-mm')>= to_char(:StartDate, 'yyyy-mm')
  and to_char(END_TIME, 'yyyy-mm') < TO_CHAR(:EndDate, 'yyyy-mm')
 GROUP BY TO_CHAR(END_TIME, 'yyyy-mm'), org_id order by YM
这段是我的 查询SQL 【查询速度非常慢】
 SEHR_V_XMAN_EVENT_TOTAL 这个是我的视图
视图中的内容是从四张表中取出的
表都没有建 索引

解决方案 »

  1.   

    Oracle10g不行,不知道11g可以不?
      

  2.   

    补充 视图的中的四张表 是 Union All 的关系
    我用的是oracle 11g
      

  3.   

    将你SEHR_V_XMAN_EVENT_TOTAL视图建成物化视图
      

  4.   


    要么在建视图的语句看有什么可优化的 把这样类似的TO_CHAR(END_TIME, 'yyyy-mm')>= to_char(:StartDate, 'yyyy-mm')
    改成下面 本来时间就直接来比 你还转字符多耗时间
    END_TIME>=to_date(:StartDate,'yyyy-mm')
      

  5.   

    视图上不能建视图,视图本质上就是select查询,要加快查询速度可以在基表上建索引。