垂直分表之后,查询所有数据需要join操作。水平分表之后,查询所有数据都需union操作。
union
使用 union 可以将多个select语句的查询结果组合起来。语法为select 字段1,字段2 from table1 union select 字段1,字段2 from table2;
。
注意:
- union 关键字两边的select语句的字段数量是需要一致的,并不要求字段名称一致。
- 查询的最终结果集的字段是以第一个select语句的字段来命名。
- union自动屏蔽重复的数据,但是可以添加 all 来取消屏蔽。
join
使用 join 可以将多张表连接起来查询。语法为table1 join table2 on table1.字段名 = table2.字段名;
。
注意:
- join查询相当于将table1与table2两张表组合起来,形成一张新表,但是组合的前提是 table1.字段名=table2.字段名。join查询不会产生临时表,所以这张所谓的新表是不存在的,节省性能。
- 在处理字段时,如果出现字段不唯一,可以table.字段名来明确字段属于哪个表的。