ASP中存储过程调用的两种方式,以及不采用存储过程的方式比较

转载 2004年08月19日 10:18:00
 

本人用sql server 和asp写了一个简单的留言本,在不断的尝试中发现,分页显示留言的时候,不同的执行方式,时间上的一些差别。

下面通过对比来看看几种方式的用时对比。

一,使用存储过程分页,这种情况又分为两种方式:

第一种,使用command对象,如下:

Set Cmd=server.CreateObject("Adodb.Command")
Cmd.ActiveConnection=conn
Cmd.CommandText="ycuu_gb_getmsg"
Cmd.CommandType=4'adCmdStoredProc
cmd.prepared=true'
set  param=Cmd.CreateParameter("@iPageNo",adInteger,1,2,Page)
Cmd.Parameters.Append  param
set  param=Cmd.CreateParameter("@iPageSize",adInteger,1,2,PageSizeConst)
Cmd.Parameters.Append  param
set rs=Cmd.execute


第二种,使用connection对象的执行方法直接执行,具体如下:

set rs=conn.execute ("execute ycuu_gb_getmsg "&page&", "&pagesizeConst)


二,不使用存储过程,直接使用ADODB.RecordSet的功能来分页,具体代码如下:

Set rs = Server.CreateObject("ADODB.Recordset")
sql = "Select * FROM Guestbook Order By dateandtime Desc"
rs.open sql,conn,1,1
rs.pagesize = 150'每页显示的留言数量,
total = rs.RecordCount
mypagesize = rs.pagesize
rs.absolutepage = page

为了更加明显地显示出速度,我把每页显示的留言数量加大到150(事实上当然不会设置这么大的数值啦)。至于我机器的配置,就省略不说了,因为主要是速度对比。

发现,执行的时候时间分别如下:

第一种:稳定于0.1953125 秒到0.2109375 秒之间,平均值大概是:0.20秒

第二种:稳定于0.1716875 秒到0.1857秒之间,平均值大概是:0.177秒

第三种:稳定于0.4375 秒到0.4632秒之间,平均值大概是:0.45秒


但是,当读取的记录条数为20的时候,结果如下:
发现,执行的时候时间分别如下:

第一种:稳定于.0390625  秒到.0546875  秒之间,平均值大概是:0.045秒

第二种:稳定于0.046875  秒到.0546875 秒之间,平均值大概是:0.050秒

第三种:稳定于.09375 秒到0.1015625 秒之间,平均值大概是:0.97秒

在这样看来,似乎conn.execute和command.execute这两种方式似乎差别并不大,
而前者的调用方式好像更加简单一点。
同时,在这里可以看出分页的存储过程速度确实比recordset的分页速度要快很多。

PS:小弟第一次发文,呜呜呜,发现写一篇好的真难,我以后会努力的了。希望大家包涵我这次写得不好。对了,我还想问问各位大侠conn.execute和command.execute这两种方式中那种更加好的,呵呵,因为我在网上找到的都是后者这种方式执行存储过程的。不知道为什么不用前面那种那么简单的。


作者Blog:http://blog.csdn.net/beerfroth/

动态链接库的两种调用方法

静态链接库的调用很简单: 需要.h文件,lib文件. (1)设置项目属性--vc++目录--库目录为lib所在的路径 (2)将lib添加到项目属性--链接器--输入--附加依赖项(或者直接在源代码中加...
  • u012372584
  • u012372584
  • 2016年10月20日 13:29
  • 1104

Android中的两种序列化方式

java两种序列化方式
  • qq_37657081
  • qq_37657081
  • 2017年11月12日 14:23
  • 93

jsp中两种跳转方式及区别

1,response跳转:   // 带session,不带request的跳转(客户端跳转)   responst.sendRedirect("目的页面.jsp");   2,forward跳...
  • hbbonson
  • hbbonson
  • 2013年07月20日 11:46
  • 1136

动态链接库两种调用方式的比较

一、动态链接库的概念动态链接库(Dynamic Link Library,缩写为DLL)是一个可以被其它应用程序共享的程序模块,其中封装了一些可以被共享的例程和资源。动态链接库文件的扩展名一般是dll...
  • yanghaitao_1990
  • yanghaitao_1990
  • 2016年06月12日 21:22
  • 1030

Android和Untiy3D的交互方式

为android构建一个插件要创建一个android插件,首先要有 Android NDK 并熟悉使用ndk构建共享库的方法。如果用C++来实现库,必须声明成用C语言的链接方式,以避免Name Man...
  • qq_15807167
  • qq_15807167
  • 2016年07月22日 16:22
  • 645

表单form的提交有两种方式,一种是get的方法,一种是post 的方法

表单form的提交有两种方式,一种是get的方法,一种是post 的方法.看下面代码,理解ASP.NET Get和Post两种提交的区别:                     你的名字  ...
  • u011425213
  • u011425213
  • 2013年08月06日 16:42
  • 2362

android 四大组件之Service两种调用方式使用详解

一 概述 Service服务作为android中的四大组件之一,其作用和重要性也不用多说。service用于长期在后台处理任务,与Activity相反Service没有可见的用户界面,但Servic...
  • AirMario
  • AirMario
  • 2016年12月21日 08:39
  • 1346

多线程实现的两种方式及其区别

继承Threadpublic class Demo2_Thread { public static void main(String[] args) { MyThread mt ...
  • StriverLi
  • StriverLi
  • 2017年02月26日 21:07
  • 1297

有两种实现多线程的方式以及两种方式之间的区别

Java中有两种实现多线程的方式。一是直接继承Thread类,二是实现Runnable接口。那么这两种实现多线程的方式在应用上有什么区别呢?          为了回答这个问题,我们可以通过编写...
  • u013449800
  • u013449800
  • 2014年08月22日 18:40
  • 3940

LU 分解,采用行连续划分方式下的 MPI 实现

#include "stdio.h" #include "stdlib.h" #include "mpi.h" #define a(x,y) a[x*M+y] /*A为M*M矩阵*/ #define ...
  • koastal
  • koastal
  • 2016年01月20日 15:30
  • 605
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP中存储过程调用的两种方式,以及不采用存储过程的方式比较
举报原因:
原因补充:

(最多只允许输入30个字)