cyang421
cyang421
2018-06-12 14:29
采纳率: 28.6%
浏览 3.3k

MYSQL垂直分表后如何查询

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

9条回答 默认 最新

  • qq_38544862
    qq_38544862 2018-06-12 14:41

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

    点赞 评论
  • caozhy

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

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

    点赞 评论
  • yxjhhdx
    yxjhhdx 2018-06-12 16:32

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

    点赞 评论
  • it_zhangwei
    路漫漫兮其修远兮 2018-06-13 01:30

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

    点赞 评论
  • mkmkhqbu
    mkmkhqbu 2018-06-13 01:54

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

    点赞 评论
  • qq_29862603
    RunTomato 2018-06-13 03:07

    先把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.

    点赞 评论
  • fsy351
    fsy351 2018-06-13 03:18

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

    点赞 评论
  • Aeggainety
    Aeggainety 2018-06-13 03:32

    用union进行连表查询

    点赞 评论
  • wangluoxiaoqiang
    wangluoxiaoqiang 2018-06-13 05:19

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

    点赞 评论

相关推荐