Aldwin
2019-01-07 15:45
采纳率: 33.3%
浏览 1.1k
已采纳

mysql数据库分表和分区的问题

最近在做公司文件管理的时候遇到一个需求,需要将文件根据部门保存,所以设计了设计了一个部门表用以存储部门和对应文件存储的表号。图片说明图片说明

在页面上根据不同部门和条件先显示对应的文件分页,当不指定部门只指定其他条件的时候,就需要从不同文件表中select整合在一起,我建立一个视图去union所有的文件表,但是如果增加新部门的话,那么这个视图就需要重新改。所以我想到了用分区,然后询问组长的时候被回绝了。

问题

所以我想问一下为什么不能用分区?还有有什么比较好的方法可以解决这个问题

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • 大川里的小川人 2019-01-07 16:47
    已采纳

    我对楼主的理解是,因为视图在增加新部门的时候,修改幅度较大,所以使用分区,在添加新部门的时候,变动较小,但是

    但是分区的问题在于查询,加入我们按照部门为主键进行分区,此时按照 部门主键进行查询的时候,确实是有可能提高查询速度的,因为分区后,数据量变小了,并且建立的B+树层数可能也比原来的小一些。

    但是如果不是按照主键索引查询,而是按照辅助索引查询,那么每个分区你都需要去访问一遍,每个分区都需要访问一遍B+树,假设分成了8个区,B+树为3层,这里查询需要24次IO,而原来只需要3次IO。

    而对于这种一对多的关系,你的数据库表设计是有问题的,文件是唯一的,文件(1)对 部门(多),一个文件只属于一个部门,一个部门有多个文件。 所以应该是 文件表 添加部门字段。

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 「已注销」 2020-12-10 10:35
    问问

     

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题