小弟不才,想请教各位一个存储过程分页的问题
小弟最近开发一个流量统计系统,涉及数据为千万级别,用了SQL SERVER存储过程做的!现在遇到几个难题想请教各位,真心感谢!
存储过程如下(来源网上某位高手的),我自己改动了下,因为有三个条件是每次查询差不多都用到的,就一并写进去了!
CREATE PROCEDURE GetRecordPage
@tblName varchar(255), -- 表名
@fldName varchar(255), -- 字段名
@PageSize int, -- 页尺寸
@PageIndex int, -- 页码
@OrderType bit, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(2000), -- 查询条件 (注意: 不要加 where)
@fleString varchar(2000), ---取出的字段
@GetUserId int, --我加的参数 用户ID号
@GetGameId int, --我加的参数 游戏ID号
@GetSiteId int --我加的参数 站点ID号
AS
declare @strSQL varchar(6000) -- 主语句
declare @strTmp varchar(1000) -- 临时变量
declare @strOrder varchar(500) -- 排序类型
/***以下部分是我改的
当用户ID不为空时,原始的strwhere(查询条件 不带where的)语句 连接上我加上的条件
if @GetUserId != ' '
set @strWhere = @strWhere + ' and come_userid = ' +@GetUserId
if @GetGameId != ' '
set @strWhere = @strWhere + ' and come_gameid = ' +@GetGameId
if @GetSiteId != ' '
set @strWhere = @strWhere + ' and come_siteid = ' +@GetSiteId
**/
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 &nb