--创建测试表
CREATE TABLE [t_test]
(
[tid] INT IDENTITY(1,1) PRIMARY KEY,
[varcharValue] VARCHAR(50),
[floatValue] FLOAT
)
--向表中插入10000条数据
declare @counter int
set @counter=1
while @counter<10000
begin
insert into [t_test] values(Convert(varchar(50),Rand()),Rand())
set @counter=@counter+1
end
go
--查询表中数据
select * from [t_test]
--显示执行时间
set statistics time on
--分页1:差集思想--没有在前20条中的前10条
select top 10 * from [t_test] where [tid] not in(select top 20 [tid] from [t_test] order by [tid]) order by [tid]
--分页2:求前30条与前20条的差集
select top 10 * from [t_test] t1
where not exists
(
select * from (select top 20 * from [t_test] order by [tid]) t2
where t2.tid=t1.tid
)
order by tid
--分页3:取前10条从(id>前20条最大的id)
select top 10 * from [t_test] where
(
tid>(select max(tid) from (select top 20 tid from [t_test] order by tid))
)
order by tid
SELECT TOP 10 *
FROM [t_test]
WHERE ([tid] >
(SELECT MAX([tid])
FROM (SELECT TOP 20 [tid]
FROM [t_test]
ORDER BY [tid]) AS [t1]))
ORDER BY [tid]
--分页4:使用分析函数ROW_NUMBER()实现(只适用于2005及以上版本)
SELECT * FROM
(
SELECT ROW_NUMBER() OVER (ORDER BY [tid]) [num],*
FROM [t_test]
) [t1]
WHERE num>20 AND num<=30
--分页5:创建临时表:这种方案的执行效率最差,但通用性最强
CREATE TABLE [#temp1]
(
[tempId] INT IDENTITY(1,1),
[tid] INT,
[varcharValue] VARCHAR(50),
[floatValue] FLOAT
)
INSERT INTO [#temp1] SELECT * FROM [t_test] ORDER BY [tid]
SELECT * FROM [#temp1]
WHERE [tempId]>20 AND [tempId]<=30
--分页6:使用表变量
DECLARE @tt TABLE ([tempId] INT IDENTITY(1,1), [tid] INT)
INSERT INTO @tt([tid])
select [tid] from [t_test] order by [tid]
SELECT [t1].[tid],[varcharValue],[floatValue] FROM [t_test] [t1],@tt [t2]
WHERE [tempId]>20 AND [tempId]<=30
AND [t1].[tid]=[t2].[tid]
分享到:
相关推荐
SQLServer数据库的分页查询,比较全面。
java 连接sqlserver数据库查询,并分页显示
几条常见的数据库分页SQL 语句,针对oracle,sqlserver,mysql三种常见数据库的分页显示。
SQLServer数据库分页,提供SQLServer内部分页
数据库分页是老生常谈的问题了。如果使用ORM框架,再使用LINQ的话,一个Skip和Take就可以搞定。但是有时由于限制,需要使用存储过程来实数据库分页是老生常谈的问题了。如果使用ORM框架,再使用LINQ的话,一个Skip和...
SQL server2008中通用分页存储过程,表名,每页长度,页码都是动态赋值。
SqlServer数据库中的分页语句,SqlServer分页SQL语句特点:一次查询,数据库只返回一页的数据。而不是取出所有的数据。
数据库分页是老生常谈的问题了。如果使用ORM框架,再使用LINQ的话,一个Skip和Take可以搞定。但是有时由于限制,需要使用存储过程来实现。在SQLServer中使用存储过程实现分页的已经有很多方法了。之前在面试中遇到过...
sql server分页技术 详解 sql server分页技术 详解 sql server分页技术 详解
一个基于Hibernate 和 SQLServer 数据库的分页示例,所有文件和数据库备份都在,只是速度不怎么快,如果加上自动生成下拉框,速度就更慢了,单表、10008条测试数据,如果哪位大侠改进了查询速度望告之:vni2007@163....
(4) 如何在SQLServer中创建临时表(如何在SQLServer中将数据复制到创建的临时表) (5)如何实现行转列 (6)查询出某个字段所有重复的记录 (7) 写一条sql语句,要修改一个字段的俩个值,比如把字段sex中的男改为...
用于oracle,mysql,sqlserver,数据库分页联合查询
资源名称:SQL Server 2005 一千万条以上记录分页数据库优化经验总结 资源截图: 资源太大,传百度网盘了,链接在附件中,有需要的同学自取。
1.只需要提供Sql语句和每页的记录数,页数就可以了 2,速度超快哟,100W记录1~3秒就分出来了 3,对于存储过程特别好用
常用数据库分页sql(),1.oracle数据库分页;2.DB2数据库分页;3.SQL Server 2000数据库分页;4.SQL Server 2005数据库分页5.MySQL数据库分页
总结了上去了sql server 2005 数据库的各种基本操作,包括用存储过程实现分页,触发器的使用等等
自己封装超好用的分页高级查询基于ssm(sqlServer 数据库,底层为逆 向工程(配合我的sqlserver逆向工程使用),分页sql脚本为后添加,使用时需 要拷贝我做的分页sql,包括对应的【注意:引入这个标签<sql id=...
利用SQL server数据库实现分页技术的详细讲解, 里面和实例, 入门级同学值得研究下!