Inv*_*der 7 database sql-server oracle normalization
我听说我的团队负责人说,在过去的一些项目中,他们不得不取消规范化,以提高查询速度.
我认为它可能与表联盟有关.
有更多的精益表真的没有脂肪表少吗?
MrT*_*lly 17
它取决于...连接表本质上比一个大表"预加入"即非标准化要慢.但是,通过非规范化,您将创建数据重复,并且您的表将变得更大.规范化被认为是一件好事,因为它创建了可以回答"任何"问题的数据库,如果正确完成,您可以构建一个选择来获取数据.在某些其他形式的数据库中情况并非如此,现在(大多数情况下)是历史性的无关紧要,标准化/关系数据库赢得了这场战斗.
回到你的问题,使用去规范化使事情变得更快是一种公认的技术.通常最好运行您的数据库一段时间,这样您就知道要取消规范化的内容以及单独留下什么,并且将数据保持为"正确"的规范化形式并将数据拉入一组非规范化报告中也很常见桌子定期.如果该过程是作为报告运行本身的一部分完成的,那么数据也始终是最新的.
作为过度规范化的一个例子,我曾经看过过去的数据库,一周的日子和一年中的几个月被分成不同的表 - 日期本身已经标准化 - 你可以走得太远.
根据我对 Oracle OLTP数据库的长期使用经验(其中一些数据库非常庞大且繁忙),我可以诚实地说,我不记得曾经遇到过真正需要“非规范化性能”的情况。然而,我见过很多情况,有人因为对潜在性能问题的恐惧、不确定性和怀疑而提前决定应用非规范化。这通常是在没有任何基准测试的情况下完成的,而且我总是发现实际上没有实现任何性能改进 - 但数据维护代码已经变得比原来复杂得多。
OLAP 是一种非常不同的动物,我无法对此发表评论。
归档时间: |
|
查看次数: |
6368 次 |
最近记录: |