毫秒级百万数据分页存储过程

然后创建分页存储过程;这个是基于SQL 2005 的ROW_NUMBER的, SQL 2000 不适用; SQL 2008 我没有安装,所以也没有测试过!估计应该可以运行.

 2种算法可以选择 1. 使用  BETWEEN   ;  2.  TOP  ; 代码中已经注释了.

我测试了一下2种方法基本没有什么区别;代码如下:

 

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
50
51
52
53
54
55
56
57
58
59
60
61
62
USE [DATA_TEMP]
GO
/****** 对象:  StoredProcedure [dbo].[im531_Page]    脚本日期: 11/26/2010 10:52:35 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      im531
-- Create date: 2010-10-25
-- Description: SQL 2005 ROW_NUMBER 分页
-- Modify Date: 2010-10-26
-- =============================================
CREATE PROCEDURE [dbo].[im531_Page]
    @TabeNameAS NVARCHAR(50),
    @FieldsAS NVARCHAR(1024),
    @SearchWhereAS NVARCHAR(1024),
    @OrderFieldsAS NVARCHAR(1024),
    @pageNumberAS INT,
    @pageAS INT
AS
BEGIN
    SET NOCOUNTON;
    DECLARE @sqlTypeAS TINYINT
    SET @sqlType = 0  -- 0 BETWEEN   1 TOP
    DECLARE @sqlAS NVARCHAR(MAX)
    IF @SearchWhere <> '' SET @SearchWhere = ' WHERE ' + @SearchWhere
    IF @page < 2 SET @page = 1
    IF @page = 1
        BEGIN
            SET @sql = 'SELECT TOP ' +CONVERT(NVARCHAR(20),@pageNumber) + ' ' + @Fields
                +'FROM [' + @TabeName + '][a] WITH(NOLOCK) ' + @SearchWhere + ' ORDER BY ' + @OrderFields
        END
    ELSE
        BEGIN
            --临时表
            SET @sql = ';WITH [Page_____Table] AS('
                +'SELECT ROW_NUMBER() OVER(ORDER BY ' + @OrderFields + ') AS [RowNow],' + @Fields
                +'FROM ['+ @TabeName +' ][a] WITH(NOLOCK) ' + @SearchWhere
                +')'
            --查找当前页面记录
            IF @sqlType = 0
                BEGIN
                -- A USE BETWEEN
                    SET @sql = @sql + 'SELECT *'
                        +'FROM [Page_____Table] WITH(NOLOCK)'
                        +'WHERE [RowNow] BETWEEN ' +CONVERT(NVARCHAR(20),(@page - 1) * @pageNumber + 1) + ' AND ' +CONVERT(NVARCHAR(20),@page * @pageNumber)
                        +'ORDER BY [RowNow]'
                END
            ELSE
                BEGIN
                -- B USE TOP
                    SET @sql = @sql + 'SELECT TOP ' +CONVERT(NVARCHAR(20),@pageNumber) + ' *'
                        +'FROM [Page_____Table] WITH(NOLOCK)'
                        +'WHERE [RowNow] > ' +CONVERT(NVARCHAR(20),(@page - 1) * @pageNumber)
                        +'ORDER BY [RowNow]'
                END
        END
    EXEC(@sql)
END

 

转载于:https://www.cnblogs.com/aiwz/p/6153899.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/420030.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle11连12c报权限错误,关于Oracle12c连接报错的问题

关于Oracle12c连接报错的问题这段时间因为项目原因&#xff0c;接触到了Oracle12C&#xff0c;其实问题很简单&#xff0c;就是pl/sql developer能够访问数据库服务端即可&#xff0c;却碰到了奇奇葩葩的问题&#xff0c;现分享一下。1、在java端报Ora-12505错误&#xff0c;即…

前端学习(1433):vue是什么

#### 1.1 Vue是什么> Vue.JS是优秀的前端 JavaScript 框架 > > react/angular/vue库和框架的区别:- 库(如jQuery)库是工具. 提供大量API&#xff0c;体现了封装的思想、需要自己调用这些API- 框架框架提供了一套完整解决方案,使用者要按照框架所规定的某种规范进行开发…

oracle10客户端tnsname,连接Oracle RAC 的tnsname.ora设置

由于Oracle数据库通常需要在不同地方被访问&#xff0c;所以Oracle开发人员必须搞清楚数据库性能如何被网络通讯所影响。由Oracle提供的TNS(Transparent Network Substrate)允许不同数据库之间的分布式通讯。作为一种分布式协议的TNS&#xff0c;允许远距离的系统之间的透明数据…

【100亿次的挑战】之春晚控制后台故事分享

讲师&#xff1a;freyli 项目历程简介在介绍控制后台部分之前&#xff0c;先简单回顾下项目的时间线&#xff1a; 10月25日&#xff0c;意向、调研、策划、沟通 11月24日&#xff0c;第一次技术初审 12月7日&#xff0c;互动形态框架确定&#xff0c;时间轴初现 12月15日&#…

前端学习(1434):为什么学习vue

#### 1.2 为什么要学习 Vue传统开发模式: JQueryRequireJS/SeaJSartTemplateGulp/Grunt随着项目业务场景的复杂,传统模式已无法满足需求就出现了Angular/React/Vue等框架- 企业需求 - 主流框架之一(React Angular Vue) - 易用、灵活、高效

oracle 如何创建job,oracle创建job

一、基本语法与MysqL的event事件类似&#xff0c;用来创建数据库的定时任务。DBMS_JOB.SUBMIT(job OUT BINARY_INTEGER,what IN VARCHAR2,NEXT_DATE IN DATE DEFAULTSYSDATE,interval IN VARCHAR2 DEFAULT NULL,no_parse IN BOOLEAN DEFAULT FALSE,instance IN BINARY_INTEGER …

如何简单快速调试高大上的谷歌浏览器

上一篇我们简单的将了在Ubuntu上编译chromium&#xff0c;android content_shell_apk的编译&#xff0c;一切顺利的就能生成apk。但是我们仅仅只是照搬了人家google开源的东西&#xff0c;作为一个开发者我们应带着探索的精神&#xff0c;都说它稳定&#xff0c;速度快。它为什…

前端学习(1435):vue能做什么

#### 1.3 Vue 能做什么- 最大程度上解放了 DOM 操作 - 单页web项目(SinglePageApplication项目,例如[Worktile官网](https://worktile.com/))开发 - 传统网站开发

linux下proc目录,Linux /proc目录详解

3. 例子3.1 /proc/linuxidc.comlinuxidc:~$ ls /proc/1 16819 21242 2180 2494 8768 interrupts partitions116 16820 21244 2181 2524 885 iomem sched_debug11740 17901 21245 21810 2525 acpi ioports scsi1174…

前端学习(1436):vue特点

#### 1.4 核心特性- 双向数据绑定- vue(借鉴了react的虚拟DOM,借鉴了angular双向数据绑定) - 通过 **指令** 扩展了 HTML&#xff0c;通过 **表达式** 绑定数据到 HTML - 解耦视图与数据 - 可复用**组件** - 虚拟DOM - M-V-VM - 数据驱动视图

集合排序求平均

static void Main(string[] args) { ArrayList al new ArrayList(); //定义一个集合Console.Write("请输入人数:"); int n Convert.ToInt32(Console .ReadLine ()); …

Linux装c编译器gcc,c编译器进阶之路,linux下的gcc c编译器使用教程

c编译器的重要性不言而喻&#xff0c;从往期c编译器文章中&#xff0c;如c编译器优化、选定c编译器等&#xff0c;想必大家对c编译器均已有所了解。往期文章中&#xff0c;小编主要从宏观方面为大家讲解c编译器&#xff0c;此外对于gcc c编译器的讲解也大多基于windows。本文中…

前端学习(1437):vue一些链接

#### 1.5 一些链接[Vue官方文档](https://cn.vuejs.org/)[Vue开源项目汇总](https://github.com/opendigg/awesome-github-vue)[Vue.js中文社区](https://www.vue-js.com/)

GDB调试程序(二)

以下文章转自陈皓CSDN博客: http://blog.csdn.net/haoel/article/details/2879 GDB的命令概貌——————— 启动gdb后&#xff0c;就你被带入gdb的调试环境中&#xff0c;就可以使用gdb的命令开始调试程序了&#xff0c;gdb的命令可以使用help命令来查看&#xff0c;如下所示…

Linux下CMAKE编译jsoncpp,c – 如何为jsoncpp编写cmake模块?

我想使用jsoncpp编写C代码以解析JSON文件.让我解释一下我做了什么.我创建了一个CMakeLists.txt,我创建了一个FindJsoncpp.cmake以及一个简单的c文件来测试jsoncpp.当我使用-I /usr/include / jsoncpp / -ljsoncpp编译没有cmake的C源时,它工作正常.但是当我尝试使用cmake构建它时…

前端学习(1438):vue三种安装方式

1. 直接下载源码然后通过路径引入- 开发版本&#xff1a;https://vuejs.org/js/vue.js- 生产版本&#xff1a;https://vuejs.org/js/vue.min.js2. CDNjs <script src"https://cdn.jsdelivr.net/npm/vue2.5.16/dist/vue.js"></script> 3. 使用 npm 下载&…

三星s7共享网络给linux,三星Galaxy S7WiFi状态下可以共享wifi热点吗【详解】

目前&#xff0c;越来越多的智能手机都具有wifi热点的功能&#xff0c;不仅方便了不少网友之间的网络流量共享&#xff0c;而且一个wifi热点还可以共享到多个设备。而三星最新款手机三星Galaxy S7与S7 Edge在wifi热点功能的基础上&#xff0c;将wifi热点功能进行的升华&#xf…

文件处理封装

/// <summary>/// 文件处理封装/// </summary> public static class FileHelper{/// <summary>/// 读取Txt文件/// </summary>/// <param name"FilePath">文件地址</param>/// <returns>文件内容</returns>public s…

前端学习(1439):vue的helloworld

#### 2.2 HelloWorld> 作用:将数据应用在html页面中1. body中,设置Vue管理的视图<div id"app"></div>2. 引入vue.js3. 实例化Vue对象 new Vue();4. 设置Vue实例的选项:如el、data... new Vue({选项:值});5. 在<div idapp></div>中通过…