问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

sql server海量数据分页存储过程如何使用

发布网友 发布时间:2022-04-10 20:48

我来回答

1个回答

热心网友 时间:2022-04-10 22:17

sqlserver海量数据分页的存储过程
-- 获取指定页的数据

Create PROCEDURE pagination3

@tblName varchar(255), -- 表名

@strGetFields varchar(1000) = '*', -- 需要返回的列

@fldName varchar(255)='', -- 排序的字段名

@PageSize int = 10, -- 页尺寸

@PageIndex int = 1, -- 页码

@doCount bit = 0, -- 返回记录总数, 非 0 值则返回

@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序

@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)

AS

declare @strSQL varchar(5000) -- 主语句

declare @strTmp varchar(110) -- 临时变量

declare @strOrder varchar(400) -- 排序类型

if @doCount != 0

begin

if @strWhere !=''

set @strSQL = "select count(*) as Total from [" + @tblName + "] where "+@strWhere

else

set @strSQL = "select count(*) as Total from [" + @tblName + "]"

end

--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都是@doCount为0的情况

else

begin

if @OrderType != 0

begin

set @strTmp = "<(select min"

set @strOrder = " order by [" + @fldName +"] desc"

--如果@OrderType不是0,就执行降序,这句很重要!
end

else

begin

set @strTmp = ">(select max"

set @strOrder = " order by [" + @fldName +"] asc"

end

if @PageIndex = 1

begin

if @strWhere != ''

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from [" + @tblName + "] where " + @strWhere + " " + @strOrder

else

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " from ["+ @tblName + "] "+ @strOrder

--如果是第一页就执行以上代码,这样会加快执行速度

end

else

begin

--以下代码赋予了@strSQL以真正执行的SQL代码

set @strSQL = "select top " + str(@PageSize) +" "+@strGetFields+ " 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) +" "+@strGetFields+ " from ["

+ @tblName + "] where [" + @fldName + "]" + @strTmp + "(["

+ @fldName + "]) from (select top " + str((@PageIndex-1)*@PageSize) + " ["

+ @fldName + "] from [" + @tblName + "] where " + @strWhere + " "

+ @strOrder + ") as tblTmp) and " + @strWhere + " " + @strOrder

end

end

exec (@strSQL)

GO
如果在数据库中有大数据量,而我们用分页存储过程,怎么样才能效率高...

其中第一种方法使用于任何数据库。为了减少网络通信,同时又提高查询速度,可以使用缓冲。即一次查询足够多的记录,保存在缓存中,传给客户,当客户需要查看指定记录时,从缓存中取出数据。具体实现方案为:假如每页10条记录,如果查看第5页记录,则一次查找的40-69共三十条记录,存入缓存。当选择上一页,...

sqlserver如何保存存储过程

1、点击数据库表右键的【设计】;2、把影响到的列改成允许为空;3、点击【保存】。原因:SQL存储过程语法可能是正确的,因为语法并没有对表结构内部字段是否非空进行验证,只有执行了才知道。可以选择编辑前200行,看一下是不是新增了列,但是列里面的值是null,然后又在设置的列里面不允许有null,...

sqlserver怎么创建存储过程

第一步:点击数据库下的“可编程性”,选择“存储过程”,点击鼠标右键,选择“新建存储过程”第二步:在create PROCEDURE 后输入存储过程的名字,紧跟着的就是定义存储过程的参数,接下来就可以去编写自己所需要组装的存储过程语句了 注意,怕写的不对,可以执行下,想验证sql语句是否正确,就使用print输...

使用SQL存储过程有什么好处 用视图有什么好处

如果公司有专门的DBA,写存储过程可以他来做,程序员只要按他提供的接口调用就好了。这样分开来做,比较清楚。3。修改方便。嵌入在程序中的SQL语句修改比较麻烦,而且经常不能肯定该改的是不是都改了。SQLSERVER上的存储过程修改就比较方便,直接改掉该存储过程,调用它的程序基本不用动,除非改动比较大(...

sqlserver当表A插进数据的时候,同时用存储过程,也要向表b插入需要的数...

create proc sp_add a int,b varchar(5)as begin declare @Aadderror int,@Badderror int select @Aadderror=0,@Badderror=0 begin tran insert into A(a,b) values(@a,@b)set @Aadderror=@@error insert into B(a,b) values(@a,@b)set @Badderror=@@error if @Aadderror=0 ...

sql server 求和后如何分页?请看SQL语句

原理:先把表中的所有数据都按照一个rowNumber进行排序,然后查询rownuber大于40的前十条记录 这种方法和oracle中的一种分页方式类似,不过只支持2005版本以上的 第四种:存储过程查询 创建存储过程 alter procedure pageDemo pageSize int,page int AS declare @temp int set @temp=@pageSize*(@page ...

sqlserver 存储过程 保存在哪张表里如何通过select语句查询哪些存储过 ...

select * from sysobjects where xtype='p' 如果想查看存储过程的源语句可以使用sp_helptext 命令,打开存储过程。比如要打开的存储过程的名字是pro_a 你需要在查询分析器里面选择存储过程所在的数据库,然后输入 sp_helptext pro_a 然后执行,就可以在下面的结果窗口显示存储过程的内容了 ...

sqlserver怎么创建存储过程?

1、打开SQLservermanagementstudio,连接到数据库,展开想要创建的数据库,找到【可编程性】-&gt;【存储过程】的菜单。2、在第一步找到的【存储过程】菜单项上面,点击鼠标右键,依次选择【新建】-&gt;【存储过程】,就可以开始创建存储过程了。3、当点击了第二步的【存储过程】之后,在右侧就会出现一个新的...

为什么数据库sqlserver中有存储过程这个

分为两种存储过程:一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局...

sqlserver存储过程执行sql为什么会比在数据库直接执行sql要快?_百度...

首先,存储过程在首次执行时会被编译成执行计划。后续执行时,直接使用已编译的执行计划,省去了每次执行时的解析和编译步骤。相比之下,直接执行 SQL 语句需要解析和编译过程,这使得存储过程的执行效率通常更高。此外,存储过程能够整合多个 SQL 语句,减少了网络传输的次数和数据量。数据库在优化存储过程...

sqlserver调用存储过程 sqlserver存储过程教程 sqlserver存储过程参数 sqlserver存储过程实例 sql server创建存储过程 sqlserver存储过程语法 sqlserver存储过程写法 sql数据库存储过程怎么写 SQLserver存储过程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
谁有一些精彩的英文歌的歌词 &lt;婚礼歌手&gt;最后男主角在飞机上弹吉他唱歌给女主角听并向她求婚,谁知道... I Wanna Grow Old With You完整歌词 战魂降临2.6第一波偷袭怪物怎么过,都是秒杀?高手来 加拿大航空机队 C#操作MySQL参数化查询怎么使用啊,为什么我用参数就查不到数据,用拼接... 汽车风扇冒烟怎么回事 头小的男人长得一般般,你们觉得怎么样 小区楼上漏水影响楼下怎么办 离职后多久可以提取公积金 离职后何时能提取公积金? 卡西欧G-shock5524的指针怎么调,方法简明点,拜托拜托啦 兰州市第27中怎么样?可以考二本吗? 兰州二十七中与二中相比到底是哪个的师资力量比较不错 别的方面相比呢 兰州二十七中有住宿吗? 兰州市第二十七中学怎么样? 兰州五中和兰州二十七中哪个学校更好些 兰州市27中在2009年中考报考中算第1志愿还是第2志愿,谢谢 兰州27中的重点班好不好,一本升学率多少,师资力量怎样,几个重点班,哪个好一些,严不严? 兰州27中和兰州外国语高级中学哪个好? 兰州27中好还是28中好 求兰州二十七中简介 兰州二十七中 怎么样? 兰州27中好不好?和五中,三中比呢?我是学理的 ,准备转学,上高二,谢谢. 兰州27中咋样? 兰州二十七中怎么样 兰州27中在哪 兰州二十七中位于哪里? 兰州二十七中多少分能录取? 你好,你能帮我详细介绍一下平安智盈人生终身寿险万能型的这种保险吗 虎牙王者荣耀主播完熊君的熊套面具表情怎么那么生动*真啊!它那个熊套哪儿买的 不同颜色宣纸有何寓意 蓝纸金字什么意思 客厅中堂字用篮宣纸写的能挂吗? 科罗娜啤酒 万年蓝纸有什么寓意? 给女朋友送花为什么用蓝色纸? 宣纸的颜色是什么? 可以用蓝色宣纸写戒子书吗 什么是什色宣纸,传统上是用白色宣,色宣是用来创作什么样的书法内容? 蓝色宣纸始于什么时候? 书法宣纸底色讲究? 科罗纳啤酒和凯罗纳是同一种吗? 印刷制版中的蓝纸是什么意思,比如晒蓝纸、数码蓝纸。 蓝纸金字悬挂有什么讲究 印刷的出蓝纸是指什么?详细一点。知道印刷要打样,为什么只出蓝纸样? 怎么申请中国建设银行小额担保贷款 qq自由幻想 66ss怎么赚钱? 66SS刷死亡矿井有什么技巧吗? QQ自由幻想66SS在哪升级快? QQ自由幻想66SS套装图谱除了幸运轮盘还有哪里可以打到?