表[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去查询,效率非常低,哪位大拿有比较好的意见?
我一般遇到这种情况都是定义函数,例如定义函数f_getvalue(code) 函数内部实现就是根据code到t2表找出对应val值
然后最后调用sql就不用几张表关联,就调用函数
效率高不高还真不清楚,你就当一个思路吧
当然如果你t2表定义的时候加些索引,感觉效率应该过的去