Home > Database > Mysql Tutorial > 实现上千万条数据的分页显示_MySQL

实现上千万条数据的分页显示_MySQL

WBOY
Release: 2016-06-01 14:05:33
Original
1494 people have browsed it

-- 获取指定页的数据
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 = " 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

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template