淘二哥女装专业导购
http://www.tao2ge.com
文章分类:数据库
表中主键必须为标识列,[ID] int IDENTITY (1,1)
1.分页方案一:(利用Not In和SELECT TOP分页)
语句形式:
SELECT TOP 页记录数量 *
FROM 表名
WHERE (ID NOT IN
(SELECT TOP (每页行数*(页数-1)) ID
FROM 表名
ORDER BY ID))
ORDER BY ID
//自己还可以加上一些查询条件
例:
select top 2 *
from Sys_Material_Type
where (MT_ID not in
(select top (2*(3-1)) MT_ID from Sys_Material_Type order by MT_ID))
order by MT_ID
2.分页方案二:(利用ID大于多少和SELECT TOP分页)
语句形式:
SELECT TOP 每页记录数量 *
FROM 表名
WHERE (ID >
(SELECT MAX(id)
FROM (SELECT TOP 每页行数*页数 id FROM 表
ORDER BY id) AS T)
)
ORDER BY ID
例:
SELECT TOP 2 *
FROM Sys_Material_Type
WHERE (MT_ID >
(SELECT MAX(MT_ID)
FROM (SELECT TOP (2*(3-1)) MT_ID
FROM Sys_Material_Type
ORDER BY MT_ID) AS T))
ORDER BY MT_ID
3.分页方案三:(利用SQL的游标存储过程分页)
create procedure SqlPager
@sqlstr nvarchar(4000), --查询字符串
@currentpage int, --第N页
@pagesize int --每页行数
as
set nocount on
declare @P1 int, --P1是游标的id
@rowcount int
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
exec sp_cursorfetch @P1,16,@currentpage,@pagesize
exec sp_cursorclose @P1
set nocount off
4.总结:
其它的方案:如果没有主键,可以用临时表,也可以用方案三做,但是效率会低。
建议优化的时候,加上主键和索引,查询效率会提高。
通过SQL 查询分析器,显示比较:我的结论是:
分页方案二:(利用ID大于多少和SELECT TOP分页)效率最高,需要拼接SQL语句
分页方案一:(利用Not In和SELECT TOP分页) 效率次之,需要拼接SQL语句
分页方案三:(利用SQL的游标存储过程分页) 效率最差,但是最为通用
分享到:
相关推荐
在Web开发中,分页技术是一种常用的解决办法,它能够有效地将大量数据分成若干个小部分进行展示,提高用户体验并减轻服务器压力。本文将通过一个具体的JSP分页示例来详细解析分页技术的实现过程。 #### 二、分页...
在JavaWeb开发中,PageHelper是一个非常常用的分页插件,它简化了数据库查询的分页操作,使得在处理大量数据时能有效地管理和展示信息。本压缩包包含的"模拟pageHelper的JavaWeb分页源码与开发文档"提供了一个理解和...
常用方法: - `start()`: 启动或恢复session。 - `set($key, $value)`: 存储session变量。 - `get($key)`: 读取session变量。 - `unsetKey($key)`: 删除指定的session变量。 - `destroy()`: 销毁所有session...
- 解决办法:为常用查询创建合适的索引,优化查询语句,避免全表扫描,同时关注数据库的执行计划。 7. **不使用存储过程和函数**: - 错误:过度依赖Java代码处理业务逻辑,而忽视了数据库的存储过程和函数功能。...
7. 外键冲突导致数据导入失败解决办法 当外键约束导致导入失败时,可以先禁用外键约束,导入数据后再启用: ```sql ALTER TABLE 表名 DISABLE CONSTRAINT 外键名; -- 进行数据导入 ALTER TABLE 表名 ENABLE ...
### ASP.NET ASPNetPager分页统计时与实际不符的解决办法 #### 背景介绍 在进行ASP.NET开发过程中,经常会遇到数据分页的需求。ASPNetPager是ASP.NET中的一个常用的分页控件,它可以帮助开发者实现数据的分页显示。...
优化 SQL 的数据操作为:1) 通过减少查询次数来降低请求系统资源的频率,而采取快照、显形图等这样 的分布式数据库对象是降低数据库次数的好办法。2) 查询最好用相同或更类似 的 SQL 语句执行,这既能充分利用 SQL ...
- **高级特性**:如自定义SQL,分页查询,一对多或多对一关联映射,动态SQL等。 - **问题排查**:常见错误及其解决办法,性能优化建议。 4. **资料** 资料可能涵盖: - **官方文档**:详尽的API参考和使用指南...
例如,在使用 Oracle 数据库进行分页查询时,我们可能会使用以下 SQL 语句: ```sql select tm.* from (select rownum rm, t.* xmlrecord from testtable t) tm where tm.rm > ? and tm.rm ``` 在 Java 中,我们...
76 <br>0112 获得字符串中大写字母的个数 77 <br>0113 获得某字符在字符串中最后出现的位置 78 <br>0114 如何找出字符串中某一字符的所有位置 78 <br>4.3 常用字符及字符串处理技术 79 <br>...
MySQL 3.22版本及之后支持分页查询,因此在编写SQL语句时需要注意当前使用的MySQL版本。 6. **结果集处理** ```php $row = mysql_fetch_object($rs); $id = $row->id; $title = $row->title; $asker = $row->...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式 2.3.1 主动域对象模式 2.3.2 JDO模式 2.3.3 CMP模式 2.4 Hibernate API简介 2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 ...
2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式 2.3.1 主动域对象模式 2.3.2 JDO模式 2.3.3 CMP模式 2.4 Hibernate API简介 2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 ...
2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式 2.3.1 主动域对象模式 2.3.2 JDO模式 2.3.3 CMP模式 2.4 Hibernate API简介 2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 ...
2.2.3 常用的ORM中间件 2.3 实体域对象的其他持久化模式 2.3.1 主动域对象模式 2.3.2 JDO模式 2.3.3 CMP模式 2.4 Hibernate API简介 2.4.1 Hibernate的核心接口 2.4.2 事件处理接口 2.4.3 ...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...
18、一个用户表中有一个积分字段,假如数据库中有100多万个用户,若要在每年第一天凌晨将积分清零,你将考虑什么,你将想什么办法解决? 107 19、一个用户具有多个角色,请查询出该表中具有该用户的所有角色的其他...