反规范化之前,我想知道这是怎么回事有以下什么样的影响:反规范化对查询,连接和响应时间有什么影响?
- 查询响应时间
- 行的宽度在数据库
- 加入必要的结果
- 号码的查询需要完成的请求
看来,如果我没有弄错,所有这些将会是减少?
反规范化之前,我想知道这是怎么回事有以下什么样的影响:反规范化对查询,连接和响应时间有什么影响?
看来,如果我没有弄错,所有这些将会是减少?
您的假设是正确的。非规范化会提高性能,但不利之处在于它降低了正确性。
此主题的长度在此以前stackoverflow question
岂不行的在数据库中的宽度增加了讨论?
非规范化只应作为最后手段的优化来完成。
它会增加数据库的大小,并增加数据重复并使数据难以保持最新和同步。
非规范化是一个相当广泛的术语,所以没有快速回答您的问题。
在避免加入的情况下,检索速度可能会更快。但是,您正在增加更新和数据维护的复杂性,因此需要进行折衷。
您似乎在询问在系统范围内查询次数或速度是否会得到提高,这也不完全是它的意义 - 最好将其视为特定的本地优化在应用程序中遇到瓶颈,即要考虑使单个查询或一组查询运行得更快。
如果您碰巧在Microsoft SQL Server中工作,我强烈建议您将表格标准化并使用所谓的索引视图进行非规范化。这些是半永久性的数据结构,只要基础表被更新就更新。通过这种方式,您可以保持两全其美 - 规范化模式和快速非规范化数据!
Oracle也可能存在类似的情况,不确定。
除了“与数据库中的行”,你的答案都是正确的。
“反规范化”意味着在一行中存储比绝对必要的更多信息。如果不增加行宽,这是不可能的。
但最重要的是:你没有提出所有的问题。
你还在想,如果你故意在你的数据库中引入Redencancy,那么你不应该同时引入一些额外的数据库约束,以防止你的数据库包含损坏的数据(与自身相矛盾的数据)?
如果对这个问题的答案是'是',那么也许你应该问自己,是否强制执行所有那些仅仅因为你介绍赎回而需要的额外约束,不会导致你产生类似的(或多更新性能损失)。
这就是为什么它非常适合数据仓库(不保留任何最新信息),并且不适合在线交易数据库。不同的用途对不同的设计会更好。 – 2009-06-15 20:33:11
行的宽度会增加?抱歉。你能解释一下吗? – 2009-06-15 20:38:17