0 0

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

表[t1]        
id name clNo clNo1 clNo2
1 a a1 null a3
2 b b1 b2 null

 

表[t2]    
id val clNo
1 10 a1
2 20 b2
3 30 a3
4 50 null 
5 15 b2

 

结果数据:

name val val1 val2
a 10 null  30
b null 15 null 

 

我的思路是这样的:

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去查询,效率非常低,哪位大拿有比较好的意见?

 

2014年5月19日 17:23

1个答案 按时间排序 按投票排序

0 0

采纳的答案

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

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

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

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

2014年5月19日 20:53

相关推荐

Global site tag (gtag.js) - Google Analytics