select ROW_NUMBER() over(order by qty,empid) as rownum,
empid,mgrid,qty
into #SalesRN
from dbo.sales;
create unique clustered index idx_rn on #salesrn(rownum);
declare @pagesize as int,@pagenum as int;
set @pagesize=5;
set @pagenum=2;
select rownum,empid,mgrid,qty
from #salesRN
where rownum between @pagesize*(@pagenum-1)+1
and
@pagesize*@pagenum
order by rownum;
drop table #salesrn;
优点:高效 思路是把数据插入一个临时表中,并为临时表创建一个聚集索引,保证每次只seek所需的数据。
通用:sqlserver 2005及以后的版本,无论数据库的主键是什么类型的(identity &&guid),都可以通过row_number()
进行处理
经测试后此方法性能上仍然欠缺,我将在提供一个思路。
分享到:
相关推荐
Oracle通用数据库存储过程代码--高效分页存储过程,只需简单的修改即可使用,方便易懂!
自己写的,不怎么好。 呵呵,贴出来大家参考参考!
ASP.NET数据分页通用高效方法,存储过程分页
利用存储过程优化分页,每次只读出每页要显示的数据,效率很高
通用高效分页存储过程实现,欢迎高手指点 含数据库脚本,经测试通过
适用于单一主键或存在唯一值列的表或视图,高效通用分页存储过程(双向检索)
ORACLE和mssql 高效的分页存储过程,均通用,直接调用即可
SQL Server 2000下的通用分页存储过程.sql
每次只提取指定条数记录,原理同常见分页存储过程一样,可适用于access,且MSSQL2k之后分页存储过程和构造sql语句的效率相差无几,完全可用该分页类代替存储过程等。 代码附带使用例子。
-- Description: 分页查询 -- ============================================= CREATE PROCEDURE [dbo].[paging] @tblName nvarchar(4000), ----要显示的表或多个表的连接 @fldName nvarchar(4000) = '*', ----要...
一个通用的非常简单实用的分页存储过程,可以减轻数据库查询的压力,程序员快速开发出现高效的查询代码
经过测试,确实是效率最高的分页 1.使用游标分页。 2.使用top分页。 3.使用ROW_NMUBER()分页
精典,绝对超值,高效分页通用存储过程,经测试过,好用。效率高
jh-plugins是一项基于JSTL的自定义标签(插件)库,致力于打造一处实现、任何项目通用的开源项目。 jh-plugins已实现标签库:分页 jh-plugins特点:高效、轻巧、简单、适用(可融合与任何B/S架构的java项目) jh-...
通常大家都会认为存储过程可以避免sql注入的漏洞,这适用于一般的存储过程,而对于通用分页存储过程是不适合的,请看下面的代码和分析!
这个我人写的一个纯Java版的分页算法,与平台无关性,具有很好的通用性,同时附带完整的工程; 工程使用SQLServer2005,建表脚本在工程下的Setup中,根据你个人的数据库调整资源文件中的配置即可运行;同时这个算法...
前些时间看了玉开兄的“如此高效通用的分页存储过程是带有sql注入漏洞的”这篇文章,才突然想起某个项目也是使用了累似的通用分页存储过程。
无刷新分页, ajax分页, Asp.net分页 包含示例,适用于.net aspx webform 和 mvc 简洁,通用,高效,绝对推荐。