3 回答
![?](http://img1.sycdn.imooc.com/545847f50001126402200220-100-100.jpg)
TA贡献1812条经验 获得超5个赞
多个表以下列方式/案例提供帮助:
(a)如果不同的人要开发涉及不同表的应用程序,则将它们拆分是有意义的。
(b)如果您想为不同的人赋予不同的权限,以进行数据收集的不同部分,则拆分它们可能更为方便。(当然,您可以查看定义视图并对其进行适当授权)。
(c)为了将数据移动到不同的地方,尤其是在开发过程中,使用表来减小文件大小可能是有意义的。
(d)在基于单个实体的特定数据收集开发应用程序时,较小的占地面积可能会给您带来舒适感。
(e)这是一种可能性:您认为作为单个值的数据将来可能会变成真正的多个值。例如,信用额度到目前为止是单个值字段。但是明天,您可能会决定将值更改为(日期从,日期到,信用值)。拆分表现在可能会派上用场。
我的投票将是针对多个表-数据已适当拆分。
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1874条经验 获得超12个赞
合并表称为非规范化。
可能会(或可能不会)使某些查询(使很多JOIN
s)更快地运行,而以创建维护地狱为代价。
MySQL
只能使用JOIN
方法,即NESTED LOOPS
。
这意味着对于驱动表中的每个记录,MySQL
在循环中在驱动表中找到匹配的记录。
查找记录是相当昂贵的操作,可能需要花费纯记录扫描数十倍的时间。
将所有记录移到一个表中将帮助您摆脱此操作,但是表本身会变大,并且表扫描需要更长的时间。
如果其他表中有很多记录,则表扫描的增加可能会增加按顺序扫描记录的好处。
另一方面,可以保证维护。
![?](http://img1.sycdn.imooc.com/5333a0490001f9ff02200220-100-100.jpg)
TA贡献1946条经验 获得超3个赞
他们都是1:1的关系吗?我的意思是,如果某个用户可以属于不同的用户级别,或者如果用户兴趣在用户兴趣表中表示为多个记录,那么合并这些表将立即成为问题。
关于以前关于规范化的答案,必须说数据库规范化规则完全忽略了性能,而只是在看什么是整洁的数据库设计。这通常是您想要实现的目标,但是有时在追求性能方面积极地规范化是有意义的。
总而言之,我要说的问题归结为表中有多少个字段,以及它们被访问的频率。如果用户活动通常不是很有趣,那么出于性能和维护的原因,始终将其保留在同一记录上可能会很麻烦。如果经常访问某些数据(例如设置),但仅包含太多字段,则合并表可能也不方便。如果仅对性能提高感兴趣,则可以考虑其他方法,例如将设置分开,但将其保存在自己的会话变量中,这样就不必经常查询数据库。
添加回答
举报