SELECT L.ID
  FROM LINK L
 WHERE L.LEFT = 0
   AND L.RIGHT <> 0
UNION ALL
SELECT L.ID
  FROM LINK L
 WHERE L.LEFT <> 0
   AND L.RIGHT = 01
已知在表link中 id是主键索引
请问能否优化该语句。

解决方案 »

  1.   

    L.LEFT = 0
      AND L.RIGHT <> 0
    建立位图索引
      

  2.   

    id 是索引,但是条件字段是么,如果不是最好建立索引,具体建立位图还是普通索引就得看字段的特性了,还有,建立索引以后,条件不要用 <>,因为用<> 的话,就不走索引了,可以用 > or < 替换 <>.
      

  3.   

    (SELECT L.ID FROM LINK L WHERE  L.RIGHT>0 and L.LEFT = 0 
    union 
    SELECT L.ID FROM LINK L WHERE  L.RIGHT<0 and L.LEFT = 0) 
    union all
    (SELECT L.ID FROM LINK L WHERE  L.RIGHT>0 and L.LEFT = 01 
    union 
    SELECT L.ID FROM LINK L WHERE  L.RIGHT<0 and L.LEFT = 01) 
    这是最高效的方式
      

  4.   


    不解,
    SELECT L.ID FROM LINK L WHERE  L.RIGHT>0 and L.LEFT = 0 
    union 
    SELECT L.ID FROM LINK L WHERE  L.RIGHT<0 and L.LEFT = 0
    和 SELECT L.ID FROM LINK L WHERE  L.RIGHT<>0 and L.LEFT = 0 不一样吗?