现实现的查询速度有点慢,想改动下视图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
最好给出完整的表结构,测试数据,计算方法和正确结果.否则耽搁的是你宝贵的时间。如果有多表,表之间如何关联?