ASP.Net MVC-数据设计-单个宽记录与多个小记录检索

ASP.Net MVC-数据设计-单个宽记录与多个小记录检索,asp.net,performance,oracle,database-design,data-access-layer,Asp.net,Performance,Oracle,Database Design,Data Access Layer,我正在设计一个Web应用程序,我们估计每小时可能有1500个独立用户。(我们没有并发用户的统计数据。)。我正在使用ASP.NET MVC3和Oracle 11g后端,所有检索都将通过打包的存储过程,而不是内联SQL。该应用程序是只读的 表A中有大约400万条记录。 表B有大约450万条记录。 表C的记录少于200000条。 还有另外两个小的查找表也链接到表A 表B和表C与表a都有1对1的关系-表a和表B是必需的,而表C不是。表B和C包含许多字符串列(一些最多256个字符) 搜索将始终返回表A中的

我正在设计一个Web应用程序,我们估计每小时可能有1500个独立用户。(我们没有并发用户的统计数据。)。我正在使用ASP.NET MVC3和Oracle 11g后端,所有检索都将通过打包的存储过程,而不是内联SQL。该应用程序是只读的

表A中有大约400万条记录。 表B有大约450万条记录。 表C的记录少于200000条。 还有另外两个小的查找表也链接到表A

表B和表C与表a都有1对1的关系-表a和表B是必需的,而表C不是。表B和C包含许多字符串列(一些最多256个字符)

搜索将始终返回表A中的0、1或2条记录,其匹配项在表b中,任何相关数据在C和查找表中

我的数据访问过程将创建一个连接和命令,执行查询,返回一个读卡器,从该读卡器加载适当的对象,关闭连接,然后进行处置

我的问题是。。。。 一次返回单个宽记录集(仅使用一个连接)更好(随着性能的提高),还是依次查询一个表(每个查询使用一个连接),返回更窄的记录并将其加入代码中更好

编辑: 澄清-我将始终需要在任一选项中提供的所有数据。这两个选项最终将导致屏幕上显示的数据量与数据库中显示的数据量相同。但其中一个会有一个单一的连接一次得到所有(但是更宽,所以可能更慢?),而另一个会有多个连接,一个接一个,一次得到更少的量。我不知道连接数量的影响是否会影响这里的决定


此外,如果我认为表的设计合适,我可以自由地对其进行非规范化。

您只需要根据需要提取尽可能多的数据。无论哪种方式从数据库移到代码中的次数少,都是您想要的方式。我会选择你的第二个建议

-编辑-


因为您需要拉取所有记录,所以只需要建立一次连接。由于两种方式获得的数据量相同,因此应尽量减少连接数,以节省内存。

即使我始终需要显示所有数据?任何一个选项都会将相同数量的数据从数据库带到代码中。一个只是交错连接,每个连接中的数据较少,另一个一次完成所有操作。哦,对不起,我一定误读了你的问题。我不知道你需要展示一切。在这种情况下,您只需要建立一次连接。由于无论哪种方式获得的数据量都是相同的,因此应尽量减少连接数以节省内存。这是有道理的-我听说许多窄记录可能会更好,因为连接是交错的,因此可以同时容纳更多用户,但我也一直在关注使用连接和命令等重量级组件构建的对象的数量,即使我在通话结束时处理了它们。不仅是内存,还包括将DB移动到其他服务器时的延迟。谢谢你们-Charmander,如果您可以编辑您的答案以包括您的“最终答案”,我会接受的。(我还没有编辑权限。)-保罗,这是我没有想到的一点。数据库在另一台服务器上。