我目前正在开发一个mvc应用程序,以便从现有的sql server数据库中读取数据。数据库是反规范化的-我正在考虑修改一些表以将其规范化到一定程度。
这导致了与开发人员同事的讨论,认为读取数据的最好方法,或者结构是否应该改变。数据将通过带有存储过程的ado.net读取。我的问题是,在一个表中包含多个字段(非规范化)还是在多个表中使用内部连接(规范化)来检索数据更有效率?
我应该提一下,表上的操作将是95%的读取,5%的写入。
发布于 2012-10-18 06:01:15
您应该使用非正规化数据进行数据分析,密集的报告使用。对于上述目的,具有非正规化将有助于提高性能。
试着简化表格的设计,让它们对你的领域模型“感觉很舒服”。
因此,简单地说,对于密集的数据读取,规范化了更高的性能,而对于域对象模型类的密集读写,反规范化了更高的性能(并且更全面)。
发布于 2012-10-18 05:57:59
对于报表应用程序,保持其非规范化。
只要反规范化的结构适合你的需求,它就会更快。
如果它是从一个规范化的数据库中填充的,那么一切都是正常的。即使不是,我仍然不会规范化这个数据库,我会为数据收集创建一个规范化版本,然后使用它来填充您当前的结构。
这种设计折衷了从一个数据库进行收集和报告的过程,花费的时间不会比另一个数据库服务器和某种类型的传输管理器多很多。
发布于 2012-10-18 05:37:43
如果你想阅读而不是写作,反规范化是个好主意。
如果你要写的比读的多,你应该规范化你的表格。
如果您不确定,或者将混合使用这两种配置,请尝试使用这两种配置进行基准测试或负载测试,看看哪种配置更适合您的应用程序。
https://stackoverflow.com/questions/12943776
复制相似问题