我有多张表,所有表的主键是相同的,都是用户ID,每个表中都有与用户相关的不同信息:
userid a1 a2 a3 a4
123 1 4 2 2
userid b1
123 13
userid c1 c2
123 43 22
userid d1 d2 d3
123 54 12 12
拼接后的表如下:
userid a1 a2 a3 a4 b1 c1 c2 d1 d2 d3
123 1 4 2 2 13 43 22 54 12 12
现在要将这些字段拼接起来,问题来了,怎么用SQL拼接最高效,需要注意的是以后还会这样关于用户信息的表?
既然是主键,必然userId是唯一性索引,三张表一张作为主表,另外两张表left join 关联,数据量再大也也不存在查询效率问题。
select * from t1
LEFT JOIN t2
on t1.userId = t2.userId LEFT JOIN t3
on t1.userId = t3.userId;
可以用EXPLAIN 看看执行计划,肯定走主键索引的,效率不是问题
用临时表,每个表都筛选后放在临时表,然后再join,这样效率很高,就是麻烦。
数据量不大的直接用视图吧,简单快捷。
这个使用 mysql join 来查询