加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

SQL Server 存储过程分页大全(2005,2000)

发布时间:2023-03-11 11:31:11 所属栏目:教程 来源:
导读:DECLARE @DateBegin datetime
DECLARE @DateEnd datetime
SET @DateBegin=getdate()
--------------------此处的分页存储过程均不是通用的,通用的都要拼接sql语句------------------
-----测试数据:cpu:Core
DECLARE @DateBegin datetime
DECLARE @DateEnd datetime
SET @DateBegin=getdate()
--------------------此处的分页存储过程均不是通用的,通用的都要拼接sql语句------------------
-----测试数据:cpu:Core 1.8,内存:1G, 1百万条,取第 5000 页,每页 100条,结果时间 毫秒

--NOT IN (需要主键,需要拼接sql,速度第二)
--EXEC spPage2000 @pageSize=100,@pageIndex=5000,@Counts=0
--测试:3080 3016 3236 3173 3186 3233 3203 3123 3216 3060 

--三次 ORDER BY (不需要主键,需要拼接sql,速度第五)
--EXEC spPage2001 @pageSize=100,@pageIndex=5000,@Counts=0
--测试:42890 52453 48220

--临时表 (需要主键,不需要拼接sql,速度第三)
--EXEC spPage2002 @pageSize=100,@pageIndex=5000,@Counts=0
--测试:13890 13656 14000

--游标 (不需要主键,不需要拼接sql,最容易做成通用,速度第四)
--EXEC spPage2003 @pageSize=100,@pageIndex=5000,@Counts=0
--测试:20453 21216 21346

--sql 2005 ROW_NUMBER(不需要主键[有主键更快],不需要拼接sql,速度第一)
EXEC spPage2005 @pageSize=100,@pageIndex=5000,@Counts=0
--有主键测试:830 873 830 890 843 826 830 
--无主键测试:15890 14970 15703
---------------------------------------------------------------------
SET @DateEnd=getdate()
SELECT DATEDIFF(millisecond,@DateBegin,@DateEnd)

-----------------------------------------------------------------------------------
--表结构

CREATE TABLE [dbo].[UserInfo2](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [user] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [password] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [datetime] [datetime] NULL  DEFAULT (getdate()),
    [content] [ntext] COLLATE Chinese_PRC_CI_AS NULL
)

-----------------------------------------------------------------------------------
--插入数据

--SELECT COUNT(1) FROM userinfo

DECLARE @I int
SET @I=1

WHILE @I<=100 BEGIN --需要测试时间性能请修改此处

    INSERT INTO userinfo (
        [user],
        password,
        [datetime],
        [content]
    )

    VALUES (
        'user ' + CAST(@I AS nvarchar(50)),
        'password ' + CAST(@I AS nvarchar(50)),
        GETDATE(),
        '添加系统用户组添加系统用户组添加系统用户组添加系统用户组添加系统用户组添加系统用户组'
    )

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章