MYSQL垂直分表后如何查询

Mysql由于列数较大,想进行垂直分表。但是分表之后的查询应该如何完成?为分表之前只要一条where 条件语句就可以,分表之后如果条件中的字段分别在两个表中如何进行查询

把不常用的字段单独放在一张表;
把text,blob等大字段拆分出来放在附表中;
经常组合查询的列放在一张表中;

select a.*, b.* from table1 a join b on a.id = b.aid where a.xxx = xxx and b.yyy = yyy

你还可以将a,b连接起来做成一个视图(view)

可能要进行多次查询,然后将结果合并。 或者修改表结构,或者修改代码

如果在两个表中建议添加一个类型标记,标记在不同的表中,然后你可以在select 中使用子查询,使用IF函数判断标记值,然后对应的去查询对应的表中的记录。
也可以同时关联两张表,然后对应的筛选掉你不需要的null数据

UNION/UNION ALL 整合成一个再用WHERE

先把2张表你需要的字段合并起来,然后就可以直接当成一张表来查了
select * from (select a.字段1, a.字段2, a.字段3, b.字段1, b.字段2 from a, b where a.id = b.id) c where c.xxx = xxx and c.xxx = xxx.

先按照两个表的过滤字段WHERE过滤,降低双表连接复杂度
然后根据子查询结果进行JOIN操作,至于采用左、右、内、外连接看你想取的字段了

用union进行连表查询

分表后都会使用一些中间件去查询,中间件会自动做查询合并,插入分表的操作。