实现千万级数据的分页显示!

转载 2004年07月10日 20:24:00

-- 获取指定页的数据
CREATE PROCEDURE GetRecordFromPage
    @tblName      varchar(255),       -- 表名
    @fldName      varchar(255),       -- 字段名
    @PageSize     int = 10,           -- 页尺寸
    @PageIndex    int = 1,            -- 页码
    @IsCount      bit = 0,            -- 返回记录总数, 非 0 值则返回
    @OrderType    bit = 0,            -- 设置排序类型, 非 0 值则降序
    @strWhere     varchar(1000) = ''  -- 查询条件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主语句
declare @strTmp   varchar(100)        -- 临时变量
declare @strOrder varchar(400)        -- 排序类型

if @OrderType != 0
begin
    set @strTmp = "<(select min"
    set @strOrder = " order by [" + @fldName +"] desc"
end
else
begin

    set @strTmp = ">(select max"
    set @strOrder = " order by [" + @fldName +"] asc"
end

set @strSQL = "select top " + str(@PageSize) + " * 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) + " * from ["
        + @tblName + "] where [" + @fldName + "]" + @strTmp + "(["
        + @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["
        + @fldName + "] from [" + @tblName + "] where " + @strWhere + " "
        + @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

if @PageIndex = 1
begin
    set @strTmp = ""
    if @strWhere != ''
        set @strTmp = " where " + @strWhere

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

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

exec (@strSQL)

GO

-------------------------------

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<%
'分页SQL语句生成代码
Function GetPageSQL(tblName,fldName,PageSize,PageIndex,OrderType,strWhere)
Dim strTemp,strSQL,strOrder

    '根据排序方式生成相关代码
    if OrderType=0 then
        strTemp=">(select max([" & fldName & "])"
        strOrder=" order by [" & fldName & "] asc"
    else
        strTemp="<(select min([" & fldName & "])"
        strOrder=" order by [" & fldName & "] desc"
    end if
    
    '若是第1页则无须复杂的语句
    if PageIndex=1 then
        strTemp=""
        if strWhere<>"" then
            strTmp = " where " + strWhere
        end if
        strSQL = "select top " & PageSize & " * from [" & tblName & "]" & strTmp & strOrder
    else        '若不是第1页,构造SQL语句
        strSQL="select top " & PageSize & " * from [" & tblName & "] where [" & fldName & "]" & strTemp & _
        " from (select top " & (PageIndex-1)*PageSize & " [" & fldName & "] from [" & tblName & "]"
        if strWhere<>"" then
            strSQL=strSQL & " where " & strWhere
        end if
        strSQL=strSQL & strOrder & ") as tblTemp)"
        if strWhere<>"" then
            strSQL=strSQL & " And " & strWhere
        end if
        strSQL=strSQL & strOrder
    end if
    GetPageSQL=strSQL        '返回SQL语句
End Function
response.write(GetPageSQL("message","messageid",10,1,0,""))
%>

来源:http://blog.csdn.net/Sun_Jianhua/archive/2004/07/04/33574.aspx

实现千万级数据的分页显示

名称:spAll_DeleteNoneUnique 输入:要查询的表名和字段列表 输出: 调用: 说明:实现千万级数据的分页显示!--可以在5秒内获取1448万条记录里的第1200页的100条记录 作...
  • itsoft2006
  • itsoft2006
  • 2007年05月31日 10:56
  • 658

实现千万级数据的分页显示!

/*  经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次时间均为 0.47 秒,第二次时间均为 0.43 秒,测试语法如下:  exec GetRe...
  • fableking
  • fableking
  • 2007年03月15日 10:36
  • 538

实现千万级数据的分页显示!

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO/* 名称:spAll_DeleteNoneUnique 输入:要查询的表名和字段列表 输出: 调用: 说明:...
  • ivan__zhang
  • ivan__zhang
  • 2007年12月08日 00:50
  • 212

实现千万级数据的分页显示!

俺从http://czcz1024.blogchina.com/转来滴转自csdn作者:铁拳/*  经测试,在 14483461 条记录中查询第 100000 页,每页 10 条记录按升序和降序第一次...
  • batistuta8848
  • batistuta8848
  • 2007年07月03日 12:30
  • 333

Android ListView实现分页显示数据

当有大量的数据需要加载到ListView的Adapter中时,全部一次性加载,通常会非常耗时,这将严重影响用户的体验性和流畅性,而分页加载则会优化加载的速度,先暂时显示一页能够显示的数据项,在拖动到最...
  • carterjin
  • carterjin
  • 2012年04月26日 09:48
  • 4745

JSP实现数据库分页显示源代码

分页显示数据库信息 分页显示数据库记录     用户名     性别     电话     E-Mail try { //驱动程序名 String dri...
  • Java958199586
  • Java958199586
  • 2011年11月06日 17:58
  • 6733

Servlet——实现数据分页显示

本文讲述了Servlet中连接数据库以及实现数据分页显示的方法。
  • ggGavin
  • ggGavin
  • 2016年05月06日 22:39
  • 7070

SSH框架中 分页显示数据Demo

分页的几个要素:总记录数,每页显示数,共几页,当前页等。 在上个例子的基础上我们开始完善我们的程序。 1.首先我们先新建立一个接口MemberDao.java,把所需要用到的方法列...
  • syaguang2006
  • syaguang2006
  • 2015年08月11日 15:20
  • 1044

浅谈--数据库 SQL千万级数据处理解决方案

在这个大数据兴起的时代,过亿条的数据的处理已经不少见了。以至于一个处理过程要几个小时的。后面慢慢优化,查找一些经验文章。才学到了一些基本方法。分享一下,由于不是专业的DBA,可能不是最优的解决方案,共...
  • happyduoduo1
  • happyduoduo1
  • 2016年07月05日 11:57
  • 6470

java web实现分页显示数据

java web实现分页显示数据  (2012-10-22 17:01:03) 转载▼ 标签:  分页显示   javaee   javaweb ...
  • n8765
  • n8765
  • 2015年08月04日 16:05
  • 1615
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:实现千万级数据的分页显示!
举报原因:
原因补充:

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