关于sql查询的效率问题,有知道的告知一下,急急急急
有一段sql查询语句,能执行,但是效率低下,客户反应强烈。。。不知有什么办法改进一下,分少,不好意思。。
[code=SQL][/code]SELECT 农户信息.姓名, 报销登记.医疗证号, 报销登记.入院日期,
报销登记.出院日期,报销登记.总费用-报销登记.应报金额 AS 剔除金额, DATEDIFF(day, 报销登记.入院日期, 报销登记.出院日期)
AS 天数, 报销登记.总费用, 报销登记.报销金额, 报销登记.报销医院编码,
[医疗服务单位_2].名称 AS 报销医院, 报销登记.住院类型,报销登记.应报金额,
[行政区划_1].名称 AS 所在村, 医疗证.区划编码, [行政区划_2].名称 AS 所在镇,
农户信息.性别, 农户信息.出生日期, [医疗服务单位_1].名称 AS 住院医院,
疾病表.疾病名称 AS 临床印象,报销登记.备注 AS 联系方式,
(CASE WHEN 报销登记.慢性病人=1 THEN '是' ELSE '否' END) AS 慢性病报销,
(CASE WHEN 正常分娩=1 THEN '是' ELSE '否' END) AS 正常分娩报销,
(CASE WHEN 剖宫分娩=1 THEN '是' ELSE '否' END) AS 剖宫分娩报销,
(CASE WHEN 婚检补助=1 THEN '是' ELSE '否' END) AS 婚检报销
FROM 医疗服务单位 [医疗服务单位_1] RIGHT OUTER JOIN
报销登记 LEFT OUTER JOIN
疾病表 ON 报销登记.入院诊断 = 疾病表.编号 ON
[医疗服务单位_1].编码 = 报销登记.诊治医院编码 LEFT OUTER JOIN
医疗服务单位 [医疗服务单位_2] ON
报销登记.报销医院编码 = [医疗服务单位_2].编码 LEFT OUTER JOIN
医疗证 LEFT OUTER JOIN
行政区划 [行政区划_2] ON LEFT(医疗证.区划编码,
(SELECT bmcd FROM #LSB)) = [行政区划_2].国际编码 LEFT OUTER JOIN
行政区划 [行政区划_1] ON LEFT(医疗证.区划编码, 10)
= [行政区划_1].国际编码 RIGHT OUTER JOIN
农户信息 ON 医疗证.医疗证号 = 农户信息.医疗证号 ON
报销登记.患者序号 = 农户信息.序号 AND
报销登记.医疗证号 = 农户信息.医疗证号
WHERE (报销登记.诊治类型 = '住院') AND (报销登记.审核 = 1) AND (报销登记.报销日期 >= '2011-05-01') AND
(报销登记.报销日期 <= '2011-06-01') and (left(报销登记.医疗证号,2)='06' or 报销医院编码='70')[code=SQL][/code]
------解决方案--------------------
高手写的
LEFT OUTER JOIN * 5
+
RIGHT OUTER JOIN * 2