当前位置: 代码迷 >> PB >> 急求教修改视图的实现方式,提升性能!该如何处理
  详细解决方案

急求教修改视图的实现方式,提升性能!该如何处理

热度:68   发布时间:2016-04-29 09:52:08.0
急求教修改视图的实现方式,提升性能!!!
现实现的查询速度有点慢,想改动下视图V_JCGL_PFXX的实现方式,尽量提高性能。
视图V_JCGL_PFXX:
SELECT dbo.SJGL_XSXX.JSRQ, dbo.SJGL_JSJH_ZD.DM_KHLB, dbo.SJGL_XSXX.KHID, 
  dbo.KHZL.KHDH, dbo.KHZL.KHJC, dbo.KHZL.KHMC, dbo.SJGL_XSXX.TXM, 
  dbo.SJGL_XSXX.MC, dbo.SJGL_XSXX.TYMC, dbo.SJGL_XSXX.JLDW,  
  CASE WHEN dbo.SJGL_XSXX.DM_SPLB = 603 THEN dbo.SJGL_XSXX.MJPH ELSE '--' END AS MJPH, 
  CASE WHEN dbo.SJGL_XSXX.DM_SPLB = 602 THEN dbo.SJGL_XSXX.CD ELSE '--' END AS CD,
  dbo.SJGL_XSXX.LB, dbo.SJGL_XSXX.DM_SPLB, dbo.SJGL_XSXX.PZWH, dbo.V_BAS_KHZL_DQPQ.PQMC, 
  dbo.V_BAS_KHZL_DQPQ.DQQC
FROM dbo.KHZL INNER JOIN
  dbo.SJGL_XSXX ON dbo.KHZL.KHID = dbo.SJGL_XSXX.KHID LEFT OUTER JOIN
  dbo.V_BAS_KHZL_DQPQ ON 
  dbo.KHZL.KHID = dbo.V_BAS_KHZL_DQPQ.KHID LEFT OUTER JOIN
  dbo.SJGL_JSJH_ZD INNER JOIN
  dbo.V_SJGL_JSJH_KHID_XS ON 
  dbo.SJGL_JSJH_ZD.JHID = dbo.V_SJGL_JSJH_KHID_XS.JHID ON 
  dbo.SJGL_XSXX.JSRQ = dbo.V_SJGL_JSJH_KHID_XS.JSRQ AND 
  dbo.SJGL_XSXX.KHID = dbo.V_SJGL_JSJH_KHID_XS.KHID
WHERE dbo.SJGL_JSJH_ZD.DM_KHLB IN
  (SELECT KHLBID
  FROM BAS_KHLB
  WHERE dbo.BAS_KHLB.KHLBDH LIKE '02%')

其中视图V_SJGL_JSJH_KHID_XS:
SELECT JHID, KHID, JSRQ
FROM dbo.SJGL_JSJH_KHID
WHERE (JHID IN
  (SELECT JHID
  FROM SJGL_JSJH_ZD
  WHERE DM_LXID = 11002))
GROUP BY JHID, KHID, JSRQ
以上这个视图还含有子查询,视图V_JCGL_PFXX在实现查询时用到视图V_SJGL_JSJH_KHID_XS,这样会导致查询数据时性能不高,希望高手给个解决方案,尽量视图中不含视图、视图中无子查询(提高性能就好)

------解决方案--------------------
加索引吧,没环境怎么给你改视图
------解决方案--------------------
SQL code
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。如果有多表,表之间如何关联?
  相关解决方案