数据库设计上的菜鸟问题
不知道怎么简说,直接详说吧。
比如现在有一个订单表,有字段发货人id。现在的实际情况,经常会用到需要按照发货负责人进行查询订单,所以需要先找负责人下的发货人,再去查找订单。
假设用户表非常大,订单表也是数据量非常大,所以在订单表里面直接加了个发货负责人字段,于是省去了连表查,请问这样效率有更高吗,高多少?这样设计是否合理?为什么?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(7)
这样做效率肯定会高,单表查询肯定比联表查询效率高,尤其是在数据量很大的时候,因为多表联合查询指不定用到什么,譬如using temporary。具体可以explain。单表的话建立合适的索引查询速度是很快的。至于这样设计是否合理。有的时候是很合理的。往往来说设计优秀的表结构也是一项很重要的事情。通过增加一个字段来提高查询的效率有的时候也是一种解决方案。至少我自己也这么做过。也见别人做过。只是不要这样滥用。其实针对具体项目也不会有很多种这种情况。所以如果能提高效率的话,这样用也没问题。
有的时候冗余是必要的,空间换时间
我觉得没有任何问题,效率确实会提升,我就是这样设计的。有的时候为了效率,可以适当违反范式。范式只是一个指导意见,并不是法律。不过要注意的是,负责人id和负责人名字都最好做好索引
关联表替代关联查询 效率肯定比你一直关联查询写一堆连接的sql语句的强。
个人觉得有些地方冗余还是有必要的(有些人说什么规范不要冗余)。。本身查询的时候要得信息是AB表的内容,还要把一个C表关联进来作为AB联系的媒介也不合理还降低查询效率。。
反范式化可以很好的避免关联。有时候还是很有必要使用的。
题主你这就是典型的
反范式设计
啊,不过在这之前你先百度一下数据库三大范式
。然后自己考量是否继续使用反范式设计才是最好的。