各位用户为了找寻关于MySQL提高分页效率的资料费劲了很多周折。这里教程网为您整理了关于MySQL提高分页效率的相关资料,仅供查阅,以下为您介绍关于MySQL提高分页效率的详细内容
下面就是大数据量时提高分页的效率的测试代码,分享给大家。
? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49--提高分页效率:实现分页时只读取显示数据,需要先在数据库创建数据库“TestForPaging”
use TestForPaging
go
--创建表SomeData
create
table
SomeData
(
id
int
primary
key
,
name
varchar
(30)
null
,
description text
)
go
--插入数据
insert
into
SomeData
values
(1,
'num1'
,
'第1条'
)
go
insert
into
SomeData
values
(2,
'num2'
,
'第2条'
)
go
insert
into
SomeData
values
(3,
'num3'
,
'第3条'
)
go
insert
into
SomeData
values
(4,
'num4'
,
'第4条'
)
go
insert
into
SomeData
values
(5,
'num5'
,
'第5条'
)
go
--数据条目总数
select
count
(*)
from
SomeData
go
--给每条记录添加一个数据级别
select
name
,description,ROW_NUMBER() over(
order
by
id
desc
)
as
dataLevel
from
SomeData
go
--查看指定的数据级别间的数据条目
select
dataLevel,
name
,description
from
(
select
name
,description,row_number() over(
order
by
id
desc
)
as
dataLevel
from
SomeData)
as
datawithleverl
where
dataLevel
between
2
and
4
go
--实现查看指定的数据级别间的数据条目的存储过程
create
procedure
GetDataPaged
(
@startRowIndex
int
,
@maximumRows
int
,
@sort
varchar
)
AS
--确保指定sort
if len(@sort)=0
set
@sort=
'id'
--带参数的查询
select
dataLevel,
name
,description
from
(
select
name
,description,row_number() over(
order
by
@sort
desc
)
as
dataLevel
from
SomeData)
AS
datawithleverl
WHERE
dataLevel > (@startRowIndex*10)
AND
dataLevel <= (@startRowIndex*10 + @maximumRows)
go
以上就是本文的的全部内容,希望对大家的学习有所帮助。