牛人请来,这样的sql查询,如何修改以提高效率?

表[t1]    
idnameclNoclNo1clNo2
1aa1nulla3
2bb1b2null

 

表[t2]  
idvalclNo
110a1
220b2
330a3
450null 
515b2

 

结果数据:

namevalval1val2
a10null 30
bnull15null 

 

我的思路是这样的:

SELECT t1.name,

       t2_1.val,

       t2_2.val,

       t2_3.val

FROM   t1

       LEFT JOIN t2 t2_1

              ON t1.clNo = t2.clNo

       LEFT JOIN t2 t2_2

              ON t1.clNo1 = t2_2.clNo

       LEFT JOIN t2 t2_3

              ON t1.clNo1 = t2_3.clNo

 

实际应用中t1 表会出现val3、val4、val5。。。

如果t2数据量千万级以上,以上面我的那种sql去查询,效率非常低,哪位大拿有比较好的意见?

 

我一般遇到这种情况都是定义函数,例如定义函数f_getvalue(code) 函数内部实现就是根据code到t2表找出对应val值

然后最后调用sql就不用几张表关联,就调用函数

效率高不高还真不清楚,你就当一个思路吧

当然如果你t2表定义的时候加些索引,感觉效率应该过的去