Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 使用规范化或非规范化表更有效_.net_Sql_Sql Server_Performance_Normalization - Fatal编程技术网

.net 使用规范化或非规范化表更有效

.net 使用规范化或非规范化表更有效,.net,sql,sql-server,performance,normalization,.net,Sql,Sql Server,Performance,Normalization,我目前正在开发一个mvc应用程序来读取现有的sql server数据库。数据库是非规范化的——我正在考虑修改一些表,使其在一定程度上规范化 这导致了与其他开发人员的讨论,认为这是读取数据的最佳方式,或者结构是否应该更改。数据将通过ado.net和存储过程读取。我的问题是,在一个表中有许多字段(非规范化)还是有几个带有内部联接(规范化)的表来检索数据更有效 我应该提到的是,表上的操作将是95%读,5%写。如果您打算读多于写,那么反规范化是一个好主意 如果你想写多于读,你应该规范你的表格 如果您不确

我目前正在开发一个mvc应用程序来读取现有的sql server数据库。数据库是非规范化的——我正在考虑修改一些表,使其在一定程度上规范化

这导致了与其他开发人员的讨论,认为这是读取数据的最佳方式,或者结构是否应该更改。数据将通过ado.net和存储过程读取。我的问题是,在一个表中有许多字段(非规范化)还是有几个带有内部联接(规范化)的表来检索数据更有效


我应该提到的是,表上的操作将是95%读,5%写。

如果您打算读多于写,那么反规范化是一个好主意

如果你想写多于读,你应该规范你的表格


如果您不确定,或者两者兼而有之,请尝试对这两种配置进行基准测试或负载测试,看看哪种配置更适合您的应用程序。

检索非规范化的数据是一个不错的选择,因为连接数较少,存储比性能成本更便宜。

标准化主要是消除重复,以便于维护和最小化所需的存储


反规范化主要是为了提高特定查询的性能,但由于某些数据是重复的(通常是关键数据),它确实使维护变得更加棘手,并增加了存储要求。

保持报告应用程序的非规范化

只要非正常化结构符合您的需求,它就会更快

如果它是从标准化数据库填充的,那么一切都很好。即使不是,我也不会规范化这个数据库,我会为数据收集创建一个规范化版本,然后用它来填充您当前的结构


从一个数据库进行收集和报告所需的设计折衷,花费的时间不会比另一个数据库服务器和某种类型的传输管理多很多。

您应该使用非规范化数据进行数据分析,密集的报告使用。出于上述目的,非规范化将有助于提高性能

对于一个“标准”的客户机-服务器应用程序,如果您对要实现的应用程序没有太多的了解,您应该使用大量的类和不断地读写数据,那么我会投票支持数据规范化,并尽可能避免维护重复的数据。尽量简化表的设计,使它们对您的域模型感到“舒适”


因此,简单地说,对于密集的数据读取,规范化的性能更高,对于域对象模型类的密集读写,非规范化的性能更高(更全面)。

表上的操作将是95%读,5%写,所以最好规范化?如果这95%用于报告,这将花费数百个非规范化数据的连接,那么我建议您,是的,保持数据规范化。读取是针对向最终用户显示数据的实时系统。我有点不清楚,您是建议将数据拆分到多个表中还是将其全部保存在一个表中(避免联接)?是的,在这种情况下避免联接。仅供参考,在我的例子中,我们已经在生产中使用了一个几乎95%甚至更多的应用程序,该应用程序是静态数据,但我们需要最好的性能和尽可能多的并发性,以便在其余数据中实现r/w操作5%,因此我们保持表结构的非规范化。问题是,当人们执行复杂的查询时,我们会遇到不时的性能问题。好吧,对于我的实时读取数据(95%)的情况,我尝试远离连接,使用一个大表,一种非规范化的方法。谢谢你帮我解决这个问题。