当前位置: 代码迷 >> Sql Server >> 关于 OR 的优化,该如何解决
  详细解决方案

关于 OR 的优化,该如何解决

热度:88   发布时间:2016-04-24 10:23:48.0
关于 OR 的优化

现在要优化下 下面SQL, 索引介绍如下, 我把 OR 转换成 UNION ALL  效率还不如不转换,在不修改业务的基础上怎么优化?

FCB(SID 是主键)
IIM(ItID,IType 是主键)
IEL(建立了 EId IType 组合非聚集索引)

SELECT  TOP 10         fb.SId              
FROM   FCB   fb
LEFT  JOIN  IIM  mp ON fb.SID = mp.ItID AND mp.IType =0
LEFT  JOIN  IIM  imp ON fb.SID = imp.ItID AND imp.IType =1 
LEFT JOIN IEL tk ON fb.SID = tk.ItID  and  tk.IType =10 AND tk.EId =  'EXAS'  
LEFT JOIN  IEL   tkr  ON fb.SID = tkr.ItID AND tkr.IType =10 AND  tkr.EId  !=  'EXAS'      
      WHERE   (
            fb.SID LIKE  '%cc%' 
                OR fb.Name    LIKE   '%cc%'  
                OR  tk.ListingId   LIKE   '%cc%'  
                OR tkr.ListingId    LIKE   '%cc%'   
                OR  mp.Id  LIKE    '%cc%'   
OR imp.Id LIKE  '%cc%' 
              )
------解决方案--------------------
那么多or、like '%%',又不能改业务逻辑,改全文索引算了
------解决方案--------------------
不妨在这些条件的表上,增加计算列,包含  cc 得 1 ,不包含得 0 ,
查询的时候,直接 where xx = 1 or yy = 1 
  相关解决方案