与WHERe子句中的联接相比,case语句的影响要小得多。
SQL性能的主要驱动力是I / O -从磁盘读取数据。我认为它比行处理要重要两个数量级。这只是一种启发式方法,并不基于数据库上的特定测试。
您正在执行自联接,这将需要大量的工作来读取表或进行大量的索引处理工作。
另一方面,case语句变成了非常原始的硬件命令-
equals,gotos等。数据驻留在最靠近处理器的内存中,因此它将进行压缩。您对case语句(例如like或子查询)没有任何幻想。我可以想象,如果删除语句中的大多数行,查询的速度将一样快。
如果您对性能有疑问,请在(VERS_NM,RPT_PERD_TYPE_CD,DATA_VLDTN_IND,Perd_END_RPT_DT)上添加索引。这个由四部分组成的索引应该使您能够获得最长时间,而无需在原始表上调用I
/ O请求。



