一个高效的分布存储过程(转)

最近在做一个几百万条数据的分页查询,研究了各种方案,在本机上用项目的实际数据库做测试,测试过程 is very 痛苦,不堪回首ing。现在废话不多说,直接上结果,相信这也是大多数搜索答案的人最愿意看的方式。

以下是存储过程的代码:

create procedure [dbo].[P_GridViewPager](

@recordTotal  int ouput,       --输出记录总数

@viewName varchar(800),  --表名

@fieldName varchar (800)=‘*’, --查询字段

@keyName varchar(200)=‘id‘,    --索引字段

@pageSize int=20,    --每页记录数

@pageNo int=1,    --当前页

@orderString  varchar(200),    --排序条件

@whereString   varchar(800)=‘1=1‘    --where条件

)

as

begin

declare   @beginRow int

declare    @endRow int

declare    @tempLmit varchar(200)

declare    @tempCount nvarchar(1000)

declare     @tempMain varchar(1000)

set  nocount   on

set  @beginRow=(@pageNo-1)*@pageSize+1

SET @endRow = @pageNo * @pageSize

SET @tempLimit = ‘rows BETWEEN ‘ + CAST(@beginRow AS VARCHAR) +‘ AND ‘+CAST(@endRow AS VARCHAR)           --输出参数为总记录数

SET @tempCount = ‘SELECT @recordTotal = COUNT(*) FROM (SELECT ‘[email protected]+‘ FROM ‘[email protected]+‘ WHERE ‘[email protected]+‘) AS my_temp‘

EXECUTE sp_executesql @tempCount,N‘@recordTotal INT OUTPUT‘,@recordTotal OUTPUT             --主查询返回结果集

SET @tempMain = ‘SELECT * FROM (SELECT ROW_NUMBER() OVER (order by ‘[email protected]+‘) AS rows ,‘[email protected]+‘ FROM ‘[email protected]+‘ WHERE ‘[email protected]+‘) AS main_temp WHERE ‘[email protected]

--PRINT @tempMain

EXECUTE (@tempMain)

--select datediff(ms,@timediff,getdate()) as 耗时

set nocount off END

GO

时间: 2024-07-31 09:47:25

一个高效的分布存储过程(转)的相关文章

一个高效的数据分页的存储过程 可以轻松应付百万数据

一个高效的数据分页的存储过程 可以轻松应付百万数据 CREATE PROCEDURE pageTest --用于翻页的测试--需要把排序字段放在第一列 (@FirstID nvarchar(20)=null, --当前页面里的第一条记录的排序字段的值@LastID nvarchar(20)=null, --当前页面里的最后一条记录的排序字段的值@isNext bit=null, --true 1 :下一页:false 0:上一页@allCount int output, --返回总记录数@pag

【转载】如何成为一个高效、快乐、健康的程序员

只需每天做一些小改变,就可摆脱病痛.保持健康.....学会去积累工作经验和成果就会变得高效......具备这些小习惯就会保持快乐…… 一:高效 互联网发展日新月异,社会科技每天都在发生着翻天覆地的变化,而程序员已经成了这个时代的庞大群体,各种各样的程序员数不胜数,我们每天上下班,不 论你是坐公交还是乘地铁,在你的身边一定有程序员.本人我就是其中的一员,本人主修java语言,从事java类开发工作.由于本人工作时间不长,经验尚 浅,都是学着前辈高人的路子,在慢慢前行,下面我给大家分享下,如何从菜鸟

[email protected]一个高效的配置管理工具--Ansible configure management--翻译(六)

无书面许可请勿转载 高级playbook Finding files with variables All modules can take variables as part of their arguments by dereferencing them with {{ and }} . You can use this to load a particular file based on a variable. For example, you might want to select a

[email protected]一个高效的配置管理工具--Ansible configure management--翻译(七)

如无书面授权,请勿转载 Larger Projects Until now, we have been looking at single plays in one playbook file. This approach will work for simple infrastructures, or when using Ansible as a simple deployment mechanism. However, if you have a large and complicated

你需要实现一个高效的缓存,它允许多个用户读,但只允许一个用户写

思路:java.util.concurrent.locks包下面ReadWriteLock接口,该接口下面的实现类ReentrantReadWriteLock维护了两个锁读锁和解锁,可用该类实现这个功能,很简单 import java.util.Date; import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; /**  * 你需要实现一个

Android:一个高效的UI才是一个拉风的UI(二)

趁今晚老大不在偷偷早下班,所以有时间继续跟大伙扯扯UI设计之痛,也算一个是对上篇<Android:一个高效的UI才是一个拉风的UI(一)>的完整补充吧.写得不好的话大家尽管拍砖~(来!砸死我把~) 前言 前篇博客翻箱倒柜的介绍了优化UI设计的两个方法,第一个就是使用尽量少的组件来实现布局功能,第二个就是使用<meger>标签来减少不必要的根节点,这两个方法都可以提高应用UI的运行效率,但是够了吗?远远是不够的,方法就像money一样永远不嫌多,所以不再介绍多一些UI设计优化的方法说

通过Vim+少量插件配置一个高效简洁的IDE

最近本人在看<TCP/IP Illustrated Volume2:The Implementation>这本书,自然要下载4.4BSD-Lite的源代码配合书本一起研读.以前学习Vim的时候就知道Vim可以通过插件的功能来配置一个功能强大的自定义IDE,这次有这么好的机会为什么不利用一下呢?于是在阅读源代码的过程中根据需要一步一步配置了一个简单完整的IDE环境,通过这几天的使用真心觉得Vim好用,速度那个快呀.以前总听别人说Vim如何如何好,这次真的让我感受到了并爱上了Vim这个工具.在这里

[email&#160;protected]一个高效的配置管理工具--Ansible configure management--翻译(十二)

如无书面授权,请勿转载 第五章 自定义模块 External inventories In the first chapter we saw how Ansible needs an inventory file, so that it knows where its hosts are and how to access them. Ansible also allows you to specify a script that allows you to fetch the inventor

Ansi[email&#160;protected]一个高效的配置管理工具--Ansible configure management--翻译(五)

无书面许可请勿转载 高级Playbook Extra variables You may have seen in our template example in the previous chapter that we used a variable called group_names . This is one of the magic variables that are provided by Ansible itself. At the time of writing there a