提高SQL的执行效率的ASP的五种做法
2023-06-13 09:14:01 时间
[b]方法一、尽量使用复杂的SQL来代替简单的一堆SQL[/b]
同样的事务,一个复杂的SQL完成的效率高于一堆简单SQL完成的效率,有多个查询时,要善于使用JOIN。
oRs=oConn.Execute("Select * FROM Books")
while not ors.Eof
strSQL = "Select * FROM Authors Where AuthorID="&oRs("AuthorID") ors2=oConn.Execute(strSQL)
Response.write ors("Title")&">>"&oRs2("Name")&"<br>"
ors.MoveNext()
wend
要比下面的代码慢:
strSQL="Select Books.Title,Authors.Name FROM Books JOIN Authors ON Authors.AuthorID=Books.AuthorID"
ors=oConn.Execute(strSQL)
while not ors.Eof
Response.write ors("Title")&">>"&oRs("Name")&"<br>"
ors.MoveNext()
wend
[b]方法二、尽量避免使用可更新Recordset[/b]
oRs=oConn.Execute("Select * FROM Authors Where AuthorID=17",3,3)
ors("Name")="DarkMan"
ors.Update()
要比下面的代码慢:
strSQL = "Update Authors SET Name="DarkMan" Where AuthorID=17"
oConn.Execute strSQL
[b]方法三、更新数据库时,尽量采用批处 理更新[/b]
将所有的SQL组成一个大的批处理SQL,并一次运行;这比一个一个地更新数据要有效率得多。这样也更加满足你进行事务处理的需要:
strSQL=""
strSQL=strSQL&"SET XACT_ABORT ON\n";
strSQL=strSQL&"BEGIN TRANSACTION\n";
strSQL=strSQL&"Insert INTO orders(OrdID,CustID,OrdDat) VALUES("9999","1234",GETDATE())\n";
strSQL=strSQL&"Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES("9999","01","G4385",5)\n";
strSQL=strSQL&"Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES("9999","02","G4726",1)\n";
strSQL=strSQL&"COMMIT TRANSACTION\n";
strSQL=strSQL&"SET XACT_ABORT OFF\n";
oConn.Execute(strSQL);
其中,SET XACT_ABORT OFF 语句告诉SQL Server,如果下面的事务处理过程中,如果遇到错误,就取消已经完成的事务。
[b]方法四、数据库索引[/b]
那些将在Where子句中出现的字段,你应该首先考虑建立索引;那些需要排序的字段,也应该在考虑之列 。
在MS Access中建立索引的方法:在Access里面选择需要索引的表,点击“设计”,然后设置相应字段的索引.
在MS SQL Server中建立索引的方法:在SQL Server管理器中,选择相应的表,然后“设计表”,点击右键,选择“Properties”,选择“indexes/keys”
[b]方法五、避免使Text字段太大[/b]
当字符串的值大小不固定时,用varchar比用char的效果要好些。我曾经看到一个例子程序,字段被定义为TEXT(255),但是他的取值经常只有20个字符。这个数据表有50k个记录,从而使这个数据库很大,大的数据库必然较慢。
同样的事务,一个复杂的SQL完成的效率高于一堆简单SQL完成的效率,有多个查询时,要善于使用JOIN。
oRs=oConn.Execute("Select * FROM Books")
while not ors.Eof
strSQL = "Select * FROM Authors Where AuthorID="&oRs("AuthorID") ors2=oConn.Execute(strSQL)
Response.write ors("Title")&">>"&oRs2("Name")&"<br>"
ors.MoveNext()
wend
要比下面的代码慢:
strSQL="Select Books.Title,Authors.Name FROM Books JOIN Authors ON Authors.AuthorID=Books.AuthorID"
ors=oConn.Execute(strSQL)
while not ors.Eof
Response.write ors("Title")&">>"&oRs("Name")&"<br>"
ors.MoveNext()
wend
[b]方法二、尽量避免使用可更新Recordset[/b]
oRs=oConn.Execute("Select * FROM Authors Where AuthorID=17",3,3)
ors("Name")="DarkMan"
ors.Update()
要比下面的代码慢:
strSQL = "Update Authors SET Name="DarkMan" Where AuthorID=17"
oConn.Execute strSQL
[b]方法三、更新数据库时,尽量采用批处 理更新[/b]
将所有的SQL组成一个大的批处理SQL,并一次运行;这比一个一个地更新数据要有效率得多。这样也更加满足你进行事务处理的需要:
strSQL=""
strSQL=strSQL&"SET XACT_ABORT ON\n";
strSQL=strSQL&"BEGIN TRANSACTION\n";
strSQL=strSQL&"Insert INTO orders(OrdID,CustID,OrdDat) VALUES("9999","1234",GETDATE())\n";
strSQL=strSQL&"Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES("9999","01","G4385",5)\n";
strSQL=strSQL&"Insert INTO orderRows(OrdID,OrdRow,Item,Qty) VALUES("9999","02","G4726",1)\n";
strSQL=strSQL&"COMMIT TRANSACTION\n";
strSQL=strSQL&"SET XACT_ABORT OFF\n";
oConn.Execute(strSQL);
其中,SET XACT_ABORT OFF 语句告诉SQL Server,如果下面的事务处理过程中,如果遇到错误,就取消已经完成的事务。
[b]方法四、数据库索引[/b]
那些将在Where子句中出现的字段,你应该首先考虑建立索引;那些需要排序的字段,也应该在考虑之列 。
在MS Access中建立索引的方法:在Access里面选择需要索引的表,点击“设计”,然后设置相应字段的索引.
在MS SQL Server中建立索引的方法:在SQL Server管理器中,选择相应的表,然后“设计表”,点击右键,选择“Properties”,选择“indexes/keys”
[b]方法五、避免使Text字段太大[/b]
当字符串的值大小不固定时,用varchar比用char的效果要好些。我曾经看到一个例子程序,字段被定义为TEXT(255),但是他的取值经常只有20个字符。这个数据表有50k个记录,从而使这个数据库很大,大的数据库必然较慢。
相关文章
- asp.net core启动源码以及监听,到处理请求响应的过程
- ASP如何连接MySQL数据库(asp怎么连接mysql)
- 优雅的Linux ASP编程之旅(linux.asp)
- Oracle 分区SQL提高查询效率(oracle分区sql)
- ASP构建Web应用MySQL必不可少(asp需要mysql)
- 使用ASP连接MySQL实现数据库应用(asp连接空间mysql)
- ASP搭配MySQL 配置惊艳不凡(asp连接mysql配置)
- 用 ASP 管理 MySQL 源码,轻松获取开发效率(asp管理mysql源码)
- ASP程序操作MySQL数据库实现数据库驱动开发(asp用mysql)
- MySQL重新梳理ASP源码转换指南(asp源码转mysql)
- ASP编程查询MySQL之道(asp查询mysql)
- 使用MySQL轻松实现ASP数据库应用(asp数据库用mysql)
- ASP连接MySQL从初学者到专家(asp引用mysql)
- ASP与MySQL的联合开发实现轻松跨平台互联网应用(asp和mysql)
- ASP开发搭配MySQL更加优雅的数据库处理(asp加mysql)
- 用ASP编写MySQL数据库程序简单又高效(asp使用mysql代码)
- ASP搭配MySQL实现完美源代码(asp mysql源代码)
- SQL与Redis结合让开发效率更上一层(sql和redis)
- Oracle ASP程序助你轻松下载(oracle asp下载)
- ASP抽取数据的执行效率
- ASP初学者常犯的几个错误(ZT)
- 提高ASP效率的五大技巧
- asp下IP地址分段计算函数
- ASP.net页面被关闭后,服务器端是否仍然执行中?
- 如何为asp.net网站项目添加子项目
- asp.net数据访问层存储过程分页语句
- Asp.net中的GridView导出遇到的两个问题和解决方法
- asp.net配置会话状态Session实现代码