SELECT L.ID 
FROM LINK L, FORM F 
WHERE L.ID = F.ID AND F.WAY = 20 AND L.NUM <> 1
这个语句能优化么?

解决方案 »

  1.   

    SELECT L.ID  
    FROM LINK L, FORM F  
    WHERE   L.NUM <> 1 and 
     L.ID = F.ID AND F.WAY = 20 AND同时 L.NUM <> 1 建议改为>1 OR <1 
      

  2.   


    SELECT L.ID  
    FROM LINK L, FORM F  
    WHERE (L.NUM <1 or L.NUM> 1) 
          AND L.ID = F.ID 
          AND F.WAY = 20 这样么?感觉在where子句中 应该把      AND L.ID = F.ID 放在第一行然后才是(L.NUM <1 or L.NUM> 1) 
      

  3.   

    SQL语句本身似乎没有可优化的.
    LINK表的ID,NUM字段分别建索引.
    FORM表的ID,WAY字段建索引.
      

  4.   


    现在的情况是只在Link表的id列 建立索引
      

  5.   

    如果FORM表数据量大的话,此SQL就只能全表扫描了,效率较低,详见SQL的执行计划.
    为何不建其他的索引呢?
      

  6.   

    5楼说的对,看执行计划吧。如果楼主有PL/SQL工具就直接 按F5,就可以
      

  7.   


    SELECT L.ID   
    FROM LINK L, FORM F   
    WHERE   
    AND L.ID = F.ID 
    AND L.NUM <1  
    AND F.WAY = 20 
    union 
    SELECT L.ID   
    FROM LINK L, FORM F   
    WHERE   
    AND L.ID = F.ID 
    AND L.NUM >1  
    AND F.WAY = 20 这是最高效的了