asp.net程序优化 尽量减少数据库连接操作
项目以我自己的设计编码完成,并整合测试。初始化数据时,问题出现了。刚开始体现在客户端接受数据很慢。测试环境环境下,数据库服务器部署在国外,网站部署在公司内部,而且我一直认为我的程序在数据库数据处理这里已经做了足够的优化,包括索引和主键已经做到了合理使用。综上所述,起初的速度问题一直没有引起我的关注。
然而最后问题的关键恰恰出在数据库连接查询方面,频繁查询导致数据初始化速度很慢。刚开始我采取的方法是即用即查:需要数据的时候就从数据库查,有比较多的单表查询返回单个字段的情况。假如我有大概3000条左右的数据集合,我循环取出其中的每一条,再从其它数据表里查询得到需要的字段,这样无故增加了3000多次数据库连接和关闭操作,当网络速度不理想时,程序速度就无法忍耐了。
坚持一条原则:尽量减少数据库连接操作。跟前端开发优化中的尽量少Http请求类似。
最终我采取的方案是将所需要的数据经过多个数据表统一放到一个List对象中,也就是放到内存中,在根据LINQ查询其中的每条数据,这样速度会快很多。这样似乎破坏力一个原则,之前我遵循的多表查询最好不要inner join3个以上的表,而这次出现了多次一个sql语句就inner join3个表以上的情况.虽然破坏了这个原则,但是相比速度极慢,连功能都实现不了的情况,显然inner join 也可以让人接受。
相关推荐
-
在ASP.NET 2.0中操作数据之六十八:为DataTable添加额外的列
导言: 当向类型化的数据集(Typed DataSet)添加一个TableAdapter时,相应的DataTable的构架已经由TableAdapter的主查询定义好了.比如,如果主查询返回A, B,C这3个域,那么 DataTable将有对应的3个列A, B,和C.除了主查询以外,TableAdapter还可以包含其他的查询,可能是返回基于某些参数的数据.比如,ProductsTableAdapter的主查询返回所有产品的信息,此外,ProductsTableAdapter还包含诸如GetPr
-
向asp.Net进发 数据库连接操作
无奈之下,基于现实的考虑,看来还是选.NET吧,起码在我所处的这个城市,这个平台可以给我带来工资上的微薄提升! 说开始就开始,先来熟悉数据库的操作,慢慢将ASP的操作用ASP.NET过一遍 操作:连接数据库,读取表中数据 采用的是OLEDB方式读取Access数据库,需要引入System.Data.OleDb 复制代码 代码如下: protected void Page_Load(object sender, EventArgs e) { OleDbConnection conn = new O
-
ASP.NET2.0 SQL Server数据库连接详解
Connection类有四种:SqlConnection,OleDbConnection,OdbcConnection和OracleConnection. SqlConnection类的对象连接SQL Server数据库:OracleConnection 类的对象连接Oracle数据库: OleDbConnection类的对象连接支持OLE DB的数据库,如Access:而OdbcConnection类的对象连接任何支持ODBC的数据库.与数据库的所有通讯最终都是通过Connection对象来完
-
asp.net 数据库连接池浅析
1,对于ASP.NET数据库连接池可以使用一组名称-值对以链接字符串的形式配置链接池.例如,可以配置池是否有效(默认是有效的),池的最大.最小容量,用于打开链接的排队请求被阻断的时间.下面的示例字符串配置了池的最大和最小容量. "Server=(local); Integrated Security=SSPI; Database=Northwind; Max Pool Size=75; Min Pool Size=5" ASP.NET数据库连接池摘要 连接池允许应用程序从连接池中获得一
-
asp.net Accee数据库连接不稳定解决方案
错误信息如下:写了如下的一个方法来返回数据操作影响的行数:如下 复制代码 代码如下: private int GetReturnValue(string sStr, string conn) { OleDbConnection odbconn = AccessHelp(conn); OleDbCommand odbcmd = new OleDbCommand(sStr, odbconn); return odbcmd.ExecuteNonQuery(); } 用下面的一个方法来调用这个类: 复制
-
在ASP.NET 2.0中操作数据之六十九:处理Computed Columns列
导言: Microsoft SQL Server里有一种computed columns列.这种列的值是通过一个表达式来计算,而表达式引用的是同一张表的其它列的值.打个比方,有一张ServiceLog表,其包含了ServicePerformed, EmployeeID, Rate, Duration等列. 虽然我们可以在一个web页面或其它什么界面里计算每笔服务的费用(也就是 比率 rate乘以时间段duration),不过我们也可以手动向ServiceLog表添加一个 AmountDue列以反
-
在ASP.NET 2.0中操作数据之七十:配置数据库连接和命令等级设置
导言: 在本系列我们用类型化的DataSets来构建数据访问层.就像在第一章探讨的那样,类型化DataSets的DataTables用作存储数据的"仓库",而TableAdapters作为连接数据库的通道,以检索.修改数据.TableAdapters 将处理数据库的很多复杂的细节进行了封装,将我们解脱出来,免去了写代码连接数据库.发出命名.向DataTable填充数据的痛苦. 不过在某些时候我们需要深入的探究TableAdapter,直接写代码处理ADO.NET对象.在第61章<
-
asp.net LINQ中数据库连接字符串的问题
项目我采用了三层结构,我把LINQ的映射文件放到了DAL这个层中,映射文件自动由VS2008生成,在原来的机器上一直正常,一点问题都没有,当我把程序移到了另外一台机子上面时候,情况就发生了变化,怎么都连接不上数据库,这个问题折腾了我好几天,改了DAL下的app.config,也改了Web下的web.config但是都没有效果,一连接数据库就报这个错误 Timeout expired 错误,郁闷好几天,最后从LINQ的映射文件中才发现原来数据库连接字符串一直是调用的Properties下面的Set
-
asp.net 数据库连接类代码(SQL)
复制代码 代码如下: public class SqlOperation { #region 属性 /// <summary> /// 保存在Web.config中的连接字符串 /// </summary> protected static string connectionstring = System.Configuration.ConfigurationManager.ConnectionStrings["hao"].ConnectionString; /
-
ASP.NET web.config中数据库连接字符串connectionStrings节的配置方法
在ASP.NET开发的网站根目录,有一个名为web.config的文件,顾名思义,这是为整个网站进行配置的文件,其格式为XML格式.这里主要谈谈文件中的<connectionStrings>节. <connectionStrings>节是对连接到数据库的字符串进行配置,由于MS SQL Server与ASP.NET同属于微软的产品,因此是使用ASP.NET开发时首选的数据库是MS SQL Server,本文只讨论对MS SQL Server的连接字符串情况.第一种情况,本地开发时,
随机推荐
- 学习YUI.Ext 第七天--关于View&JSONView
- jsp连接MySQL实现插入insert操作功能示例
- JQuery入门——用bind方法绑定事件处理函数应用介绍
- 详解Angularjs中的依赖注入
- Trojan.DL.VBS.Agent.cpb(k[1].js)脚本病毒的解决方法
- Android中Spinner控件之键值对用法实例分析
- ORACLE错误一览表 方便查询
- Oracle11g数据库win8.1系统安装配置图文教程
- js 字符串转换成数字的三种方法
- php 运算符与表达式详细介绍
- 如何制作一个弹出式的调查窗口?
- 详解Java中list,set,map的遍历与增强for循环
- 一个浙江人的23条经典经商法则!想成功必看
- JS实现商品筛选功能
- C++语言实现线性表之数组实例
- 模仿百度三维地图的js数据分享
- CSS TreeMenu 二级树形菜单示例
- javascript 闭包疑问
- Java 高并发七:并发设计模型详解
- Java Map 按照Value排序的实现方法