每页10条记录按升序和降序第一次时间均为0.47秒

注:需要建立索引复制代码 代码如下:/* 经测试,在14483461条记录中查询第100000页,每页10条记录按升序和降序第一次时间均为0.47秒,第二次时间均为0.43秒,测试语法如下: execGetRecordFromPagenews,newsid,10,100000 news为表名,newsid为关键字段,使用时请先对newsid建立索引。 */ /* 函数名称:GetRecordFromPage 函数功能:获取指定页的数据 参数说明:@tblName包含数据的表名 @fldName关键字段名 @PageSize每页记录数 @PageIndex要获取的页码 @OrderType排序类型,0-升序,1-降序 @strWhere查询条件(注意:不要加where) 作 者:铁拳 邮 箱:unjianhua_kki@sina.com"sunjianhua_kki@sina.com 创建时间:2004-07-04 修改时间:2004-07-04 */ CreatePROCEDUREGetRecordFromPage @tblNamevarchar(255),--表名 @fldNamevarchar(255),--字段名 @PageSizeint=10,--页尺寸 @PageIndexint=1,--页码 @OrderTypebit=0,--设置排序类型,非0值则降序 @strWherevarchar(2000)=''--查询条件(注意:不要加where) AS declare@strSQLvarchar(6000)--主语句 declare@strTmpvarchar(1000)--临时变量 declare@strOrdervarchar(500)--排序类型 if@OrderType!=0 begin set@strTmp="(selectmin" set@strOrder="orderby["+@fldName+"]desc" end else begin set@strTmp="(selectmax" set@strOrder="orderby["+@fldName+"]asc" end set@strSQL="selecttop"+str(@PageSize)+"*from[" +@tblName+"]where["+@fldName+"]"+@strTmp+"([" +@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"[" +@fldName+"]from["+@tblName+"]"+@strOrder+")astblTmp)" +@strOrder if@strWhere!='' set@strSQL="selecttop"+str(@PageSize)+"*from[" +@tblName+"]where["+@fldName+"]"+@strTmp+"([" +@fldName+"])from(selecttop"+str((@PageIndex-1)*@PageSize)+"[" +@fldName+"]from["+@tblName+"]where"+@strWhere+"" +@strOrder+")astblTmp)and"+@strWhere+""+@strOrder if@PageIndex=1 begin set@strTmp="" if@strWhere!='' set@strTmp="where("+@strWhere+")" set@strSQL="selecttop"+str(@PageSize)+"*from[" +@tblName+"]"+@strTmp+""+@strOrder end exec(@strSQL) GO

本文由快3平台发布于快3正规平台数据库,转载请注明出处:每页10条记录按升序和降序第一次时间均为0.47秒

相关阅读