我有一个相当复杂的查询,它使用了一堆表。返回所有记录通常需要大约17秒(尽管通常会被过滤)。它返回的一个字段是CAT.OLD_CODE
。当我用NVL(CAT.OLD_CODE,(CASE WHEN ISS.WHDEF_CODE = 'SCRAP' THEN 'SCRAP' ELSE 'QH/PH/CUST' END))
替换该字段时,查询将永远存在(我还没有让sql开发人员长时间运行它以获得前50行)。 ISS.WHDEF_CODE
已经在select语句中,并且CAT
和ISS
都外部连接到查询的主体。我在水晶报告中使用该命令,目前正在那里进行过滤,但我只是好奇为什么CASE
语句需要这么长时间(仅使用NVL
没有明显的意义对业绩的影响)。我之前在select语句中使用字符串操作时已经注意到了这一点,但这似乎只是一个简单的比较。