如题,在ASP.NET MVC程序设计中,需要从数据库中读取一系列数据。
Student表中12000条记录,分别属于70多个学校,每个学校又分为多个考点。
每一次考试有不同科目,且每一个科目可能分为多个批次。
根据Student表中的pid属性(考点),lid属性(考试等级),bid属性(考试批次)来分组统计各考点各考试等级各批次分别有多少人。
现在的问题是:
在处理显示某一个考点的考试安排时,要求显示该考点下各科目,各批次的考试人数。
当前编写代码时,是一次读取某一个考点的所有安排到一个List中,再编写相应代码处理。因为考试科目和批次都使用List来处理,感觉代码繁多,有点乱。
重新梳理过后,初步考虑在处理科目信息的代码中加入读取当前科目下的批次信息的功能,但是这样就需要多读取几次数据库。
不知道这两种方法哪种更加合理?
我理解的是,增加读取数据库次数,相应时间和效率难免有所损失,但是组织代码的时候感觉清楚一些。
综合考虑,建议你分多次读取数据库。我做的一个项目,就因为采取数据大批量获取,导致系统性能测试不过关被打回来做性能优化。(1)数据量太大,由于网络因素的不确定性和部署环境的不确定性,导致数据传输结果的差异性,这个时候我们只能从最差的结果开始考虑,也就是说,我们必须考虑最初传输结果,这就需要我们限制数据传输量;(2)增加访问数据库的次数,并不是就一定会降低数据库服务器的性能,计算机执行多次简单小批量的计算操作远比执行少量复杂大批量数据的计算操作效率要高;(3)从程序设计来说,简单的代码设计与功能实现,本身就能提高系统性能,也有助于系统维护。希望对你有帮助。
非常感谢你的回复!
个人觉得是一次性读取保存在list好点,至于你说的代码繁多那是开发人员的问题,做出来的东西是要给用户有好的体验,从用户角度看体验性好就行
我就是想知道两种方法对于性能而言会有多大的差异?
建议还是分为多次读取,可以界面上稍微改变下,使用ajax多次读取,按需读取,感觉会好些
可考虑将数据一次取出放入服务器内存 页面数据可从内存中读取 这样可以曾加大数据量的读取速度。