- 浏览: 916741 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (445)
- 备忘 (0)
- java基础 (28)
- jsp (15)
- css (4)
- javascript (30)
- struts (7)
- servlet (2)
- struts2 (7)
- jdbc (16)
- hibernate (22)
- ibatis (0)
- jpa (1)
- spring (17)
- spring定时任务 (8)
- 整合开发 (12)
- JavaArticle (0)
- php (6)
- velocity (2)
- mysql (19)
- sqlserver (52)
- oracle (23)
- lucene (49)
- ajax (13)
- dwr (5)
- JFreeChart (1)
- service (14)
- tools (18)
- c#基础 (20)
- 程序安全 (0)
- 学习网站 (1)
- 社会需求 (2)
- flash (1)
- 流媒体 (1)
- java_code (1)
- htmlparser (1)
- 速动画教程 (5)
- 设计模式 (1)
- xml操作 (2)
- uml操作 (4)
- 测试 (1)
- linux (8)
- 版本控制 (4)
- 服务器 (12)
- 安全 (6)
- 美工 (2)
最新评论
-
Zhang_amao:
我想问一下, 你用的lucene版本和highligher的版 ...
使用Lucene的Highlighter实现文件摘要的自动提取 -
wangmengfanwangzhi:
博主,你的QQ是什么啊?有关于lucene的问题想要请教啊~~ ...
Lucene下载及测试 -
cutesunshineriver:
讲得很好,理解起来很顺,对个人学习的帮助性很大,谢谢博主。
velocity入门一 -
libin2722:
我这里有一个任务调度,在晚上3点时候会自动将数据库中某表的数据 ...
Lucene-2.2.0 源代码阅读学习(16) -
greatwqs:
java -cp $JVM_ARGS $classpath ...
java的cp命令
CREATE TABLE [TestTable] (
[ID] [int] IDENTITY (1, 1) NOT NULL ,
[FirstName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[LastName] [nvarchar] (100) COLLATE Chinese_PRC_CI_AS NULL ,
[Country] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Note] [nvarchar] (2000) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
插入数据:(2万条,用更多的数据测试会明显一些)
SET IDENTITY_INSERT TestTable ON
declare @i int
set @i=1
while @i<=20000
begin
insert into TestTable([id], FirstName, LastName, Country,Note) values(@i, 'FirstName_XXX','LastName_XXX','Country_XXX','Note_XXX')
set @i=@i+1
end
SET IDENTITY_INSERT TestTable OFF
-------------------------------------
分页方案一:(利用Not In和SELECT TOP分页)
语句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 20 id
FROM TestTable
ORDER BY id))
ORDER BY ID
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID NOT IN
(SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id))
ORDER BY ID
-------------------------------------
分页方案二:(利用ID大于多少和SELECT TOP分页)
语句形式:
SELECT TOP 10 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 20 id
FROM TestTable
ORDER BY id) AS T))
ORDER BY ID
SELECT TOP 页大小 *
FROM TestTable
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 页大小*页数 id
FROM 表
ORDER BY id) AS T))
ORDER BY ID
-------------------------------------
分页方案三:(利用SQL的游标存储过程分页)
create procedure XiaoZhengGe
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
--第一个参数肯定是打开的游标的句柄;第二个是执行的sql语句;第三个是游标的滚动行为;
--第四个并发性的属性;第五个是指返回的结果集的记录数
--sp_cursoropen 定义与游标和游标选项相关的 SQL 语句,然后生成游标。
exec sp_cursoropen @P1 output,@sqlstr,@scrollopt=1,@ccopt=1,@rowcount=@rowcount output
select ceiling(1.0*@rowcount/@pagesize) as 总页数--,@rowcount as 总行数,@currentpage as 当前页
set @currentpage=(@currentpage-1)*@pagesize+1
--sp_cursorfetch 从游标中提取一行或多行。
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
--sp_cursorclose 关闭并释放游标。
exec sp_cursorclose @P1
set nocount off
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
发表评论
-
数据权限
2012-10-30 12:47 10461 创建用户test 用户映射 映射到此登录名用 ... -
索引问题
2012-07-26 10:18 694//唯一行索引 create unique index 字段 ... -
SqlServer添加修改删除字段
2012-07-26 09:22 1066SqlServer(Transact-SQL): 添加 ... -
仅当使用了列的列表 并且 identity_insert 为 on 时 才能在表 中为标识列指定显式值。
2012-03-08 14:31 2237SET IDENTITY_INSERT products2 O ... -
sql server触发器
2010-10-28 11:21 1235最近在使用触发器实现数据同步,中间遇到两个问题问题一 大字段不 ... -
往Sqlserver插入数据报错:传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确
2010-04-19 11:19 2006在新闻表中有一个字段:Content Text类型其他方面都 ... -
sql server2005数据库备份恢复出错
2010-04-06 15:25 2545现象:备份成功,还原时提示--System.Data.SqlC ... -
创建链接服务器(oracle,sql server,access,excel)
2010-04-05 16:55 2895/////////////////////////////SQ ... -
SQL COUNT DISTINCT 函数
2010-03-23 16:40 1774SELECT COUNT(DISTINCT ... -
分解字符串-sql中执行带参数的函数
2010-03-12 16:22 1749set ANSI_NULLS ONset QUOTED_IDE ... -
过滤html
2010-01-19 17:33 942create function [dbo].f_FilterH ... -
使用正则表达
2010-01-19 17:31 955先创建自定义函数------- ... -
SQL中LEN ()与DATALENGTH ()
2010-01-04 16:42 1588LEN ( string_expression )参数:要计算 ... -
SQLServer2005新增序列功能的几个函数:ROW_NUMBER, RANK, DENSE_RANK, and NTILE
2009-12-07 15:43 10921 ROW_NUMBER SELECT Produ ... -
sqlserver数据库收缩
2009-11-03 21:26 1091有时候因为数据库日志文件过大,日志无须保存,清理空间 ... -
修改sqlserver密码
2009-10-09 09:06 1360验证的时候,选择按照Windows身份验证,就直接进去了……汗 ... -
获取SQL Server数据库元数据的方法
2009-10-02 14:06 1598数据简介元数据 (metadata) 最常见的定义为“有关数据 ... -
SQL数据导入导出大全
2009-09-13 17:57 1301******* 导出到excelEXEC master..xp ... -
insert into 后获得自动插入的id(select @@identity)
2009-06-23 17:11 2623当运行完插入语句后,执行select @@identity ... -
不同服务器数据库导入方法2
2009-05-11 10:16 1268这个是建连接的方法 还没有实践过 不同服务器数据库之间的数据 ...
相关推荐
分页存储过程 分页存储过程 分页存储过程 sql代码
Oracle存储过程分页代码 Oracle存储过程分页代码 Oracle存储过程分页代码 Oracle存储过程分页代码 Oracle存储过程分页代码
ibatis调用oracle存储过程分页
asp.net利用存储过程分页代码,代码很详细,有建库脚本和页面的调用。
sql存储过程分页代码,sql存储过程分页代码 sql存储过程分页代码,sql存储过程分页代码
一个经典的储存过程分页代码,可以自己的实现分页功能,特别是对data控件非常有帮助。
可以实现存储过程分页,同时也带有相应的分页控件可供使用!
Oracle 存储过程 Oracle分页 oracle分页
sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程 sql 高效分页存储过程
存储过程分页实现实例源码 源码描述: Filename: PeterPageList * Description: 主要运用sql存储过程进行分页实现,在进行分页实现,需要注意一下事项, * 在项目的根目录下面有一个db文件夹,请认真阅读,里面包含...
利用存储过程进行分页的一个最好的例子,大家可以通过这个来学习有关存储过程分页的内容。也可以对其进行相关的修改。
分页存储过程 分页存储过程分页存储过程分页存储过程
想在存储过程中分页的朋友可以使用, sqlserver存储过程万能分页
利用SQL游标存储过程分页方案,以前用过,应该还行
asp.net分页,存储过程,gridview分页,datagrid分页
sql2005储存过程分页sql2005储存过程分页sql2005储存过程分页sql2005储存过程分页sql2005储存过程分页sql2005储存过程分页sql2005储存过程分页sql2005储存过程分页
sql存储过程分页:sqlserver 2000的分页逻辑方法;以及sqlserver2005的分页函数方法。
sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程 sql Server 通用分页存储过程
TSQL 存储过程 游标 数据库 sql优化 存储过程分页 TSQL 存储过程 游标 数据库 sql优化 存储过程分页 TSQL 存储过程 游标 数据库 sql优化 存储过程分页 TSQL 存储过程 游标 数据库 sql优化 存储过程分页 TSQL 存储...
数据库在文件夹DataBase下。 自己附加。或者执行数据文件(因数据库不同) 自己去改下Web.config连接字符串