weixin_35433614 2019-12-31 14:34 采纳率: 50%
浏览 239

mysql数据库设计问题,优化改进

现业务需求共有5张表
role(角色表)、tag(标签表)、role_tag(角色标签表)、file(文件表)、file_tag(标签文件表)
其中 角色和标签为多对多关系、文件与标签为多对多关系
标签表 为动态维护的树形结构
标签文件表大体结构:图片说明
业务需求:根据选择的标签条件(多选)同时符合条件(and关系)筛选需要的文件
有没有什么好的设计方案,按照现在这种结构感觉很笨重。而且数据量大的情况下很慢。

  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-03-15 03:45
    关注

    对于这个数据库设计问题,建议可以考虑进行以下优化:

    1. 对于标签表的动态维护的树形结构,可以使用父子关系模型进行存储和查询,这样可以方便地查询某个标签的所有子标签信息,从而提高查询效率。

    2. 对于业务需求中根据选择的标签条件(多选)同时符合条件(and关系)筛选需要的文件,可以通过对标签文件表进行联合查询来实现。具体地,可以先获取所有符合条件的标签列表,然后根据标签列表进行联合查询,以获取文件表中符合条件的文件信息。为了提高查询效率,可以建立标签文件表的复合索引,加速查询过程。

    3. 可以考虑将表中数据进行分片存储,减少单个表的数据量,从而优化查询性能。

    总之,要做出高效的数据库设计,需要充分考虑业务需求,选择合适的存储方案和查询策略,合理建立索引等。同时,定期进行数据库优化,清理冗余数据等操作,也可以有效地提高数据库性能。

    评论

报告相同问题?

悬赏问题

  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图