sql-server - 使用规范化表真的更好吗?

标签 sql-server database oracle normalization

我听我的团队领导说,在过去的一些项目中,他们不得不取消规范化以加快查询速度。

我觉得可能和table union有关系

拥有更多瘦 table 真的比拥有更少胖 table 效率低吗?

最佳答案

这取决于……连接表本质上比拥有一个“预连接”(即去规范化)的大表要慢。但是,通过非规范化,您将创建数据重复并且您的表将变得更大。规范化被视为一件好事,因为它创建的数据库可以回答“任何”问题,如果正确完成,您可以构建一个选择来获取您的数据。在某些其他形式的数据库中情况并非如此,现在(大部分)与历史无关,规范化/关系数据库赢得了这场战斗。

回到您的问题,使用去规范化来加快速度是一种广为接受的技术。通常最好运行你的数据库一段时间,这样你就知道什么要反规范化,什么不要理会,而且通常将数据保留为“正确”的规范化形式,并将数据提取到一组非规范化报告中表定期。如果该过程作为报告运行本身的一部分完成,那么数据也始终是最新的。

作为过度规范化的一个例子,我在过去看到过 DB,其中星期几和一年中的月份被提取到单独的表中——日期本身被规范化了——你可能做得太过分了。

p>

关于sql-server - 使用规范化表真的更好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/540136/

相关文章:

sql - 子查询连接和 where 中的差异可见性

database - 甲骨文安全程序

sql - SQL Server连接字符串中的 "Connect Timeout"是什么?

MySQL 列更新与触发器

.net - 如何使用 .Net 实现 SQL Server 的 BCrypt?

数据库模式更新

sql - Oracle 索引的定义与约束相同

java - 实现cacheStore时没有ID时如何加载数据来点燃缓存?

sql-server - 在 SSRS 报表查看器 Web 控件中显示整个报表?

python - pyodbc 失败且没有错误