SELECT      
 APP.ACCEPT_AS_ID      
 , ISNULL(ACCEPT_NO,'') AS ACCEPT_NO      
 , ISNULL(CUST_NAME, '') AS CUST_NAME      
 , ISNULL(C.TEL_NO1,'') AS CUST_TEL  
 , ISNULL(PROD_ID, '') AS PROD_ID      
 , ISNULL(ASC_CD,'') AS ASC_CD      
 , ISNULL(APP.REGIST_DT, '') AS REGIST_DT      
 , ISNULL(APP.REGIST_TT, '') AS REGIST_TT      
 , ISNULL(DBO.FN_GETCODE('AS_LOSE_TYPE', CANCEL_TYPE), '') AS CANCEL_TYPE      
 , ISNULL(DBO.FN_GETCODE('AS_LOSE', CANCEL_REASON), '') AS CANCEL_REASON      
 , ISNULL(APP.CANCEL_REASON_DESC,'') AS CANCEL_REASON_DESC      
FROM      
 AS_CANCEL_APPLY APP, ACCEPT_AS ACC, CUST_MST C      
WHERE       
 APP.ACCEPT_AS_ID = ACC.ACCEPT_AS_ID      
 AND ACC.CUST_ID = C.CUST_ID      
 AND ACC.STATUS <> 'LOSS'      
 AND APP.STATUS = 'N' AND ACC.RSC_CD ='a010' ORDER BY APP.REGIST_DT DESC, APP.REGIST_TT DESC 
我用计划分析这条语句慢的原因。是因为CUST_MST这个表的数据量非常大.
表扫描开销达到了百分之六十,怎么样避免表扫描呀!谢

解决方案 »

  1.   

    all scanned until you make index on column
      

  2.   

    ISNULL
    不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有
    多列这样的情况下,只要这些列中有一列含有null,该列就会从
    索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。任何
    在where子句中使用isnull的语句优化器是不允许使用索引的