3天结贴! 二次查询 加 分页 怎么做效率比较高(记录很多)

ilcjeff 2004-05-12 01:24:20
3天结贴!
...全文
133 9 打赏 收藏 举报
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
CMIC 2004-05-12
数据库量大时同意使用存储过程分页,ACCESS也可以使用存储过程。
  • 打赏
  • 举报
回复
ajex 2004-05-12
二楼已经说的很清楚了.推荐store procedure
  • 打赏
  • 举报
回复
hkz2008 2004-05-12
学习,up!
  • 打赏
  • 举报
回复
crodling 2004-05-12
如果在本页面增删数据呢,总记录数量不是要变化么,session只是第一次加载变化,而postback不变
  • 打赏
  • 举报
回复
活靶子哥哥 2004-05-12
第一次页面加载后 把计算的总记录数存入变量 session或者 url参数
下次就不需要再计算总记录数了
  • 打赏
  • 举报
回复
vzxq 2004-05-12
学习,帮你UP
  • 打赏
  • 举报
回复
ilcjeff 2004-05-12
不用存储过程怎么实现?
  • 打赏
  • 举报
回复
ilcjeff 2004-05-12
我用的ACCESS :)
  • 打赏
  • 举报
回复
cuike519 2004-05-12
用存储过程查询分页!
http://expert.csdn.net/Expert/FAQ/FAQ_Index.asp?id=193129
http://webdiyer.europe.webmatrixhosting.net/

下面是一个存储过程分页的存储过程(转贴)
CREATE proc page
@pagenum int
as
SET NOCOUNT ON /*-----这一句很重要哦:)),不然它只会认 insert #change......这个数据集:))*/
declare @sql nvarchar(500) --声明动态sql执行语句
declare @pagecount int --当前页数

--取得当前数据库的记录总数
declare @row_num int
begin
select @row_num=count(*) from cat_list

--创建临时表,作为数据过滤
create table #change (T_id int)

--判断当前页数
if @row_num>6 --大于页面显示记录数,则分页
begin
set @row_num=@pagenum*6

if @row_num=6
select top 6 * from cat_list
else
begin
set @row_num=(@pagenum-1)*6
set @pagecount=@row_num
set @sql=N''insert #change (T_id) select top ''+cast(@pagecount as char(100))+'' T_id from cat_list where T_id not in (select T_id from #change)''
exec sp_executesql @sql
select top 6 * from cat_list where T_id not in (select T_id from #change)
end
end
else --只现实全部的数据
select * from cat_list
end
GO
  • 打赏
  • 举报
回复
相关推荐
发帖
.NET社区

6.0w+

社区成员

.NET技术交流专区
社区管理员
  • ASP.NET
  • R小R
  • 喵叔哟
加入社区
帖子事件
创建了帖子
2004-05-12 01:24
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。