Aldwin 2019-01-07 15:45 采纳率: 0%
浏览 1066
已采纳

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

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

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

问题

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

  • 写回答

2条回答 默认 最新

  • 大川里的小川人 2019-01-07 16:47
    关注

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

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

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

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题