| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1228 人关注过本帖
标题:[求助]求一个高效ASP分页存储过程!谢谢!
只看楼主 加入收藏
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
结帖率:100%
收藏
 问题点数:0 回复次数:6 
[求助]求一个高效ASP分页存储过程!谢谢!
求一个高效ASP分页存储过程!能正常应对百万条数据!

最好能附加上使用说明,非常感谢!
搜索更多相关主题的帖子: ASP 数据 感谢 
2007-10-15 17:04
cainiao158
Rank: 1
等 级:新手上路
威 望:1
帖 子:157
专家分:0
注 册:2007-9-14
收藏
得分:0 

帖子里有很多,你搜索一下吧


要想飞的更高,就把地平线忘掉!
2007-10-15 22:25
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 

分页存储过程找了只有一个,而且效率也不高,执行分页上百万条数据时,根本执行不了!10万以内还马马虎虎!

加了这句Server.ScriptTimeOut=999999999,虽然脚本没超时,可提示Microsoft OLE DB Provider for SQL Server (0x80040E31)超时已过期!


Q:1428196631,百度:开发地 即可找到我,有事请留言!
2007-10-16 00:58
天涯听雨
Rank: 2
来 自:东莞
等 级:论坛游民
威 望:4
帖 子:497
专家分:64
注 册:2007-8-25
收藏
得分:0 
http://bbs.bc-cn.net/viewthread.php?tid=175543&star=at#

精华区都有,搜一下不可以了吗。

从明天起做幸福的人,喂马劈柴周游世界!
2007-10-16 13:07
gupiao175
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:40
帖 子:1787
专家分:7527
注 册:2007-6-27
收藏
得分:0 
晕,我要的是SQL存储过程方式分页的,非代码类的!
不过还是谢谢楼上的!辛苦了!

Q:1428196631,百度:开发地 即可找到我,有事请留言!
2007-10-16 13:18
天涯听雨
Rank: 2
来 自:东莞
等 级:论坛游民
威 望:4
帖 子:497
专家分:64
注 册:2007-8-25
收藏
得分:0 
我晕,,你根据的他原理写成存储过程的不可以吗?

我就是根据存储过程写成代码式后,才发布在这里的。。


其实,这个代码式,会比你所见到的一般存储式快的多。。仔细看下它的分页原理

[此贴子已经被作者于2007-10-16 13:30:38编辑过]


从明天起做幸福的人,喂马劈柴周游世界!
2007-10-16 13:29
caor1987
Rank: 1
等 级:新手上路
帖 子:228
专家分:0
注 册:2006-10-15
收藏
得分:0 

CREATE PROCEDURE page

@tblName varchar(255), -- 表名

@strGetFields varchar(1000) = '*', -- 需要返回的列

@fldName varchar(255)='', -- 排序的字段名

@PageSize int = 10, -- 页尺寸

@PageIndex int = 1, -- 页码

@doCount bit = 0, -- 返回记录总数, 非 0 值则返回

@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序

@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)

AS

declare @strSQL varchar(5000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

declare @strOrder varchar(400) -- 排序类型

if @doCount != 0

begin

if @strWhere !=''

set @strSQL = "select count(*) as Total from [" + @tblName + "] where "+@strWhere

else

set @strSQL = "select count(*) as Total from [" + @tblName + "]"

end

--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else

begin

if @OrderType != 0

begin

set @strTmp = "<(select min"

set @strOrder = " order by [" + @fldName +"] desc"

--如果@OrderType不是0,就执行降序,这句很重要!

end

else

begin

set @strTmp = ">(select max"

set @strOrder = " order by [" + @fldName +"] asc"

end

if @PageIndex = 1

begin

if @strWhere != ''

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder

else

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from ["+ @tblName + "] "+ @strOrder

--如果是第一页就执行以上代码,这样会加快执行速度

end

else

begin

--以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from ["

+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["+ @fldName + "] from [" + @tblName + "]" + @strOrder + ") as tblTmp)"+ @strOrder

if @strWhere != ''

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from ["

+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["

+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["

+ @fldName + "] from [" + @tblName + "] where " + @strWhere + " "

+ @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

end

end

exec (@strSQL)
GO

我这个存储过程还可以,只是不知道怎么在ASP中调用。

2007-10-17 09:19
快速回复:[求助]求一个高效ASP分页存储过程!谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.044130 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved