有两个表a和b,未建立任何关系。
现对其执行如下T-SQL:
select * from a
inner join b 
on charindex(a.字段a,b.字段b)>0 or charindex(b.字段b,a.字段a)>0
执行效率很低,不知道各位大侠有没有替代此语句且效率更高的语句。

解决方案 »

  1.   

    e没有办法
    e的办法就是再加一列来标识是否满足where条件,在update和insert时更新这个列.就是传说中的触发器来控制.
      

  2.   

    on charindex(a.字段a,b.字段b)>0 or charindex(b.字段b,a.字段a)>0 --如兩條件都OK等同於用=號
      

  3.   

    select * from a 
    inner join b 
    on charindex(a.字段a,b.字段b)>0 
    union all
    select * from a 
    inner join b 
    on charindex(b.字段b,a.字段a)>0 
      

  4.   

    常理union all的效率应该跟or差不多的!
      

  5.   

    不对。虽然编译器内部可以将OR跟UNION ALL之间进行转换,但是在数据量超大或者查询
    结构比较复杂时,UNION ALL的效率会好过OR.试一下这样的改法(两表的a、b字段先建索引):
    SELECT 字段列表... FROM 
    a INNER JOIN b ON a.a LIKE b.b+'%'
    UNION ALL
    SELECT 字段列表... FROM 
    b INNER JOIN a ON b.b LIKE a.a+'%'
      

  6.   

    网上查了查没有这一说! N_chow 
    Anything is possible. 
    等级:
    能给我们根据吗?先谢谢你了