设为首页
加入收藏
联系我们
首页 基础教程 技术文档 实例分析 数 据 库 疑难杂症 ASP.NET 七夕许愿树 技术论坛
最新文章
  .NET上传图片加文字…
 在vs.net bate…
 C#中利用正则表达式实现…
 Visual C#的SQ…
 关于使用存储过程创建分页
 通用分页显示查询存储过程
 大数据量的分页
 什么是web.confi…
 ASP.NET 配置文件…
 对“三层结构”的深入理解…
 多个关键字的查询问题
 VB和C# 语法对比图 …
 C#基础全接触
 用C#压缩和修复Acce…
 C#中的类型相等与恒等(…
推荐文章
 关于C#中的REF和黓认…
 读书笔记c#高级编程 委…
 【算法】C#快速排序类
 Visual C#的SQ…
 C#中调用API
 Infragistics…
 C#接口转换
 C#读取设备信息
 用.net操作word
 C# MessageBo…
 Visual C#中的数…
 雅虎公司C#笔试题,看看…
 C#.NET使用NHib…
 .net学习之运算符重载…
 Visual C# 3.…
热门文章
 ADO.Net与ADO在…
 开发ASP.NET下的M…
 用C#+XMI技术进行U…
 什么是虚拟机?
 C#基础全接触
 C#中利用正则表达式实现…
 雅虎公司C#笔试题,看看…
 用Visual C# 2…
 C#学习第一天
 C#语言初级入门(1)
 VB和C# 语法对比图 …
 远程重启计算机(C#)
 什么是B/S三层?
 Visual C#的SQ…
 Visual C#常用函…
解决SQL速度慢的方法
阅读正文 文字大小:增大 减小  文字行距:增大 减小   双击自动滚屏
本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

下面是我多年经验的总结:网络编程总要和数据库打交道。和数据库打交道总要接触到SQL。如何使你的SQL 跑得快一点,本文介绍几种行之有效的方法:方法一、尽量使用复杂的SQL来代替简单的一堆SQL. 同样的事务,一个复杂的SQL完成的效率高于一堆简单SQL完成的效率。有多个查询时,要善于使用JOIN。 oRs=objDBC.Execute(‘SELECT * FROM Books‘) for(;
!oRs.Eof;
oRs.MoveNext())
{
oRs2=objDBC.Execute(‘SELECT * FROM Authors WHERE AuthorID=‘‘+oRs (‘AuthorID‘).value+‘‘‘);
Response.write(oRs(‘Title‘).value+‘ ‘+oRs2(‘Name‘)+‘‘);
}
要比下面的代码慢: oRs=objDBC.Execute(‘SELECT Books.Title,Authors.Name FROM Books JOIN Authors ON Authors.AuthorID=Books.AuthorID‘);
for(;
!oRs.Eof;
oRs.MoveNext())
{
Response.write(oRs(‘Title‘).value+‘ ‘+oRs(‘Name‘)+‘‘);
}
方法二、尽量避免使用可更新Recordset oRs=objDBC.Execute(‘SELECT * FROM Authors WHERE AuthorID=17‘,(some flags));
oRs(‘Name‘)=‘Karl Karlsson‘;
oRs.Update();
要比下面的代码慢: objDBC.Execute(‘UPDATE Authors SET Name=‘Karl Karlsson‘ WHERE AuthorID=17‘);
方法三、更新数据库时,尽量采用批处理更新将所有的SQL组成一个大的批处理SQL,并一次运行;这比一个一个地更新数据要有效率得多。这样也更加满足你进行事务处理的需要: (in JScript) strSQL=‘‘;
strSQL+=‘SET XACT_ABORT ON
‘;
strSQL+=‘BEGIN TRANSACTION
‘;
strSQL+=‘INSERT INTO Orders(OrdID,CustID,OrdDat) VALUES(‘9999‘, ‘1234‘,GETDATE())
‘;
strSQL+=‘INSERT INTO OrderRows(OrdID,OrdRow,Item,Qty) VALUES(‘9999 ‘,‘01‘,‘G4385‘,5)
‘;
strSQL+=‘INSERT INTO OrderRows(OrdID,OrdRow,Item,Qty) VALUES(‘9999 ‘,‘02‘,‘G4726‘,1)
‘;
strSQL+=‘COMMIT TRANSACTION
‘;
strSQL+=‘SET XACT_ABORT OFF
‘;
objDBC.Execute(strSQL);
其中,SET XACT_ABORT OFF 语句告诉SQL Server,如果下面的事务处理过程中,如果遇到错误,就取消已经完成的事务。 方法四、数据库索引方法五、避免使Text字段太大当字符串的值大小不固定时,用var
char比用
char的效果要好些。我曾经看到一个例子程序,字段被定义为TEXT (255),但是他的取值经常只有20个字符。这个数据表有50k个记录,从而使这个数据库很大,大的数据库必然较慢。

本文由中国C#技术学习中心整理  如果你对本文有不明之处请到技术论坛讨论!

中国C#技术交流QQ群:6337034  10976424  9383681  35248582  35248645
版权所有:中国C#技术学习中心 Copyright © 20010-20012
建议浏览分辨率使用:1024*768分辨率
粤ICP备05002251号