加嵌套语句后查询时间从0.7秒增加到了6分钟,请问是什么原因?

SELECT 
               zy.zyh AS 住院号, 
               zy.xm AS 姓名, 
               zy.nl||f_getsjzd(zy.nldwid) AS 年龄,
               f_getbmmc(zy.ryksid) AS 入院科室,f_getbmmc(zy.dqksid) AS 出院科室 ,zy.ryrq AS 入院时间,zy.cyrq AS 出院日期, f_getryxm( zy.zyys) AS 住院医师, 
               DECODE( cb.sfsslcljgl,1,'未填写',0,'否',2,'中医',NULL,'未填写','西医') AS 是否实施临床路径管理, 
               DECODE( cb.sfwclclj,1,'是',0,'否','未填写') AS 是否完成临床路径管理, 
               DECODE( cb.sfby,1,'是',0,'否','未填写') AS 是否变异
FROM lcyhgl_bazy zy , lcyhgl_bazycb cb
WHERE zy.id = cb.bazyid
AND zy.cyrq<='2021-11-30 23:59:59'
AND zy.zt IN(1,3)
ORDER BY zy.ryrq ASC

这个语句查询只需要0.7秒,但是加入了嵌套语句,查询时间6分多钟,请问是我写的语句有问题吗?

 

 

SELECT 
               zy.zyh AS 住院号, 
                             zy.xm AS 姓名, 
                             zy.nl||f_getsjzd(zy.nldwid) AS 年龄,
                             NVL((SELECT jbbm FROM lcyhgl_brzdjl WHERE zyh = zy.zyh AND zdlx = 331 AND xh = 1 AND ROWNUM = 1),'-') AS 入院诊断编码,
                             NVL((SELECT  zdms FROM lcyhgl_brzdjl WHERE zyh = zy.zyh AND zdlx = 331 AND xh = 1 AND ROWNUM = 1),'-') AS 入院诊断名称,
                             NVL((SELECT jbbm FROM lcyhgl_brzdjl WHERE zyh = zy.zyh AND zdlx = 478 AND xh = 1),'-') AS 出院诊断编码,
                             NVL((SELECT  zdms FROM lcyhgl_brzdjl WHERE zyh = zy.zyh AND zdlx = 478 AND xh = 1),'-') AS 出院诊断名称,

               f_getbmmc(zy.ryksid) AS 入院科室,f_getbmmc(zy.dqksid) AS 出院科室 ,zy.ryrq AS 入院时间,zy.cyrq AS 出院日期, f_getryxm( zy.zyys) AS 住院医师, 
               DECODE( cb.sfsslcljgl,1,'未填写',0,'否',2,'中医',NULL,'未填写','西医') AS 是否实施临床路径管理, 
                             DECODE( cb.sfwclclj,1,'是',0,'否','未填写') AS 是否完成临床路径管理, 
                             DECODE( cb.sfby,1,'是',0,'否','未填写') AS 是否变异
FROM lcyhgl_bazy zy , lcyhgl_bazycb cb
WHERE zy.id = cb.bazyid
AND zy.cyrq<='2021-11-30 23:59:59'
AND zy.zt IN(1,3)
AND zy.dqksid<>302
ORDER BY zy.ryrq ASC

你可以把这四个查询放到后面,用left join 去查询试试,应该会快一点, 你前面的查询话0.7秒,也不算快了,该加索引的加上索引