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,连接到数据库,展开想要创建的数据库,找到【可编程性】->【存储过程】的菜单。2、在第一步找到的【存储过程】菜单项上面,点击鼠标右键,依次选择【新建】->【存储过程】,就可以开始创建存储过程了。3、当点击了第二步的【存储过程】之后,在右侧就会出现一个新的...
为什么数据库sqlserver中有存储过程这个
分为两种存储过程:一是本地临时存储过程,以井字号(#)作为其名称的第一个字符,则该存储过程将成为一个存放在tempdb数据库中的本地临时存储过程,且只有创建它的用户才能执行它;二是全局临时存储过程,以两个井字号(##)号开始,则该存储过程将成为一个存储在tempdb数据库中的全局临时存储过程,全局...
sqlserver存储过程执行sql为什么会比在数据库直接执行sql要快?_百度...
首先,存储过程在首次执行时会被编译成执行计划。后续执行时,直接使用已编译的执行计划,省去了每次执行时的解析和编译步骤。相比之下,直接执行 SQL 语句需要解析和编译过程,这使得存储过程的执行效率通常更高。此外,存储过程能够整合多个 SQL 语句,减少了网络传输的次数和数据量。数据库在优化存储过程...