满口金牙 2021-10-13 11:43 采纳率: 91.1%
浏览 57
已结题

三个mysql表,怎么设计更合理,更快

三个表第一种结构
用户信息表 ( id,name,title,),
用户订单 (id,用户信息ID(一对多外键),)
用户购买商品信息(id,用户订单ID(一对多外键),)

这是我目前的表结构, 时常要做的 是通过 用户name 查询,商品信息,
我在用django framework 写的Web后端, 感觉查询速度很慢, 比查询没有外键的大表(把三个表合成一个大表)慢了2倍以上

于是我想到第二种结构

三个表第二种结构,
用户信息表 ( id,name,title,)
用户订单 (id,用户信息ID(一对多外键),)
用户购买商品信息(id,用户订单ID(一对多外键),用户信息ID(一对多外键), 这个表多加了一个外键,查询 是要读一层外键

请教各位指点一下, 有什么最优设计方案,

  • 写回答

5条回答 默认 最新

  • huang_ftpjh 2021-10-13 14:59
    关注

    推荐第二种结构,总有需求需要
    一张表很大的时候:
    订单表可以按月分表,来限制表的大小。
    查询语句尽量用主键索引(如用户id)查询,若有其它查询条件,可先用主键查询,在主键查询的出来的记录里面进行子查询。

    select id,name,title fromselect id,name,title from table where id=‘’ group by xx
    )where 其它条件 order by xx
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 系统已结题 10月21日
  • 已采纳回答 10月13日
  • 创建了问题 10月13日

悬赏问题

  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 python的EOFError该怎么解决?
  • ¥15 Fluent,液体进入旋转区域体积分数不连续
  • ¥15 java linux下将docx文件转pdf
  • ¥15 maven无法下载依赖包
  • ¥15 关于pycharm, Callable[[str],bool]作为方法参数使用时, lambda 类型不提示问题
  • ¥15 layui数据重载无效
  • ¥15 寻找了解qq家园纵横四海的程序猿。
  • ¥15 optisystem
  • ¥15 VB.NET画图时的撤销编程