SELECT XM_LCJGK.sjlc,Fw_Xxk.fwzt,XM_DYJGK.L_KEY,XM_DYJGK.T_ID,XM_DYJGK.D_COL,XM_DYJGK.YCS FROM INXMJY.XM_DYJGK 
       inner join INXMJY.XM_LCJGK  on INXMJY.XM_DYJGK.L_key=INXMJY.XM_LCJGK.L_key
       inner join INXMJY.fw_xxk on INXMJY.XM_DYJGK.GL_KEY=INXMJY.Fw_Xxk.GL_KEY
              Where TRIM(XM_DYJGK.L_KEY)||TRIM (XM_DYJGK.J_KEY) in (SELECT trim(L_KEY)||trim(J_KEY) as uKey FROM INXMJY.XM_LCJGK where j_key= 100056620) order by  Xm_lcjgk.L_id,XM_DYJGK.L_Key,XM_DYJGK.T_ID,XM_DYJGK.D_COL
  这个语句的查询速度十分缓慢,各位大侠 帮我优化一下.

解决方案 »

  1.   

    创建 TRIM(XM_DYJGK.L_KEY)||TRIM (XM_DYJGK.J_KEY) 和 trim(L_KEY)||trim(J_KEY)
    的组合索引。用exists替代in:Where exists (SELECT  1 where TRIM(XM_DYJGK.L_KEY)||TRIM (XM_DYJGK.J_KEY)=trim(L_KEY)||trim(J_KEY) j_key= 100056620) order by  Xm_lcjgk.L_id,XM_DYJGK.L_Key,XM_DYJGK.T_ID,XM_DYJGK.D_COL
      

  2.   

    原先的where ... in ...需要优化,根据前面的表关联条件,可以改写为如下语句:
    SELECT XM_LCJGK.sjlc,Fw_Xxk.fwzt,XM_DYJGK.L_KEY,XM_DYJGK.T_ID,XM_DYJGK.D_COL,XM_DYJGK.YCS
        FROM INXMJY.XM_DYJGK 
             inner join INXMJY.XM_LCJGK on INXMJY.XM_DYJGK.L_key=INXMJY.XM_LCJGK.L_key
             inner join INXMJY.fw_xxk on INXMJY.XM_DYJGK.GL_KEY=INXMJY.Fw_Xxk.GL_KEY
        Where XM_DYJGK.J_KEY='100056620'
        order by Xm_lcjgk.L_id,XM_DYJGK.L_Key,XM_DYJGK.T_ID,XM_DYJGK.D_COL
      

  3.   

    事实上,搂主原先语句中最大的问题是将字符型的j_key(根据trim(j_key)可以知道这个字段是字符型)与数值常量比较,而且这个字段应该是有索引的,但这样一写就无法使用索引了。
      

  4.   

    使使这个
    SELECT LCJGK.sjlc,
                      Fw_Xxk.fwzt,
                      XM_DYJGK.L_KEY,
                      XM_DYJGK.T_ID,
                      XM_DYJGK.D_COL,
                      XM_DYJGK.YCS
                 FROM INXMJY.XM_DYJGK
                inner join INXMJY.fw_xxk on INXMJY.XM_DYJGK.GL_KEY =
                                            INXMJY.Fw_Xxk.GL_KEY
                inner join (SELECT XM_LCJGK.sjlc, XM_LCJGK.L_KEY, XM_LCJGK.J_KEY
                             WHERE j_key = 100056620) LCJGK ON (INXMJY.XM_DYJGK.L_key =
                                                               LCJGK.L_KEY AND
                                                               INXMJY.XM_DYJGK.J_KEY =
                                                               LCJGK.J_KEY)
                order by Xm_lcjgk.L_id,
                         XM_DYJGK.L_Key,
                         XM_DYJGK.T_ID,
                         XM_DYJGK.D_COL
      

  5.   

    楼主最好还是给出statistics 和execution plan,否则不知道真正的瓶颈在哪