php - 数据库设计上的菜鸟问题
伊谢尔伦
伊谢尔伦 2017-04-11 09:07:56
[PHP讨论组]

不知道怎么简说,直接详说吧。
比如现在有一个订单表,有字段发货人id。现在的实际情况,经常会用到需要按照发货负责人进行查询订单,所以需要先找负责人下的发货人,再去查找订单。
假设用户表非常大,订单表也是数据量非常大,所以在订单表里面直接加了个发货负责人字段,于是省去了连表查,请问这样效率有更高吗,高多少?这样设计是否合理?为什么?

伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(7)
PHP中文网

这样做效率肯定会高,单表查询肯定比联表查询效率高,尤其是在数据量很大的时候,因为多表联合查询指不定用到什么,譬如using temporary。具体可以explain。单表的话建立合适的索引查询速度是很快的。至于这样设计是否合理。有的时候是很合理的。往往来说设计优秀的表结构也是一项很重要的事情。通过增加一个字段来提高查询的效率有的时候也是一种解决方案。至少我自己也这么做过。也见别人做过。只是不要这样滥用。其实针对具体项目也不会有很多种这种情况。所以如果能提高效率的话,这样用也没问题。

ringa_lee

有的时候冗余是必要的,空间换时间

PHP中文网

我觉得没有任何问题,效率确实会提升,我就是这样设计的。有的时候为了效率,可以适当违反范式。范式只是一个指导意见,并不是法律。不过要注意的是,负责人id和负责人名字都最好做好索引

PHP中文网

关联表替代关联查询 效率肯定比你一直关联查询写一堆连接的sql语句的强。

高洛峰

个人觉得有些地方冗余还是有必要的(有些人说什么规范不要冗余)。。本身查询的时候要得信息是AB表的内容,还要把一个C表关联进来作为AB联系的媒介也不合理还降低查询效率。。

怪我咯

反范式化可以很好的避免关联。有时候还是很有必要使用的。

阿神

题主你这就是典型的反范式设计啊,不过在这之前你先百度一下数据库三大范式。然后自己考量是否继续使用反范式设计才是最好的。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号