请问,记录有上万条,数据库在mssql2000,分页显示记录???????????

时间:2022-07-16 23:21:38
譬如我一个guestbook(id,username,boooktitle,bookcontent)用来记录留言的,里面有陌生人的留言,也有登陆后用户的留言。另个表是userinfo(id,username,usersex,userage,userhomepage,userqq,useremail,useradmin),用来注册会员的表。我要显示全部留言的记录,陌生人就只显示(也只记录了)ip 地址,留言标题booktitle,和留言内容bookcontent.而登陆的用户就显示了还有他的qq,email(放在userinfo)等。要分页显示,怎么做。前提是记录至少有上万条。(其中guestbook有唯一字段id,userinfo里也有两个唯一字段usrname,id)

7 个解决方案

#1


怎么没人?请问有什么方法??能否说写具体实现思路。

#2


http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=205515

#3


自己拼

分页一定要充分利用数据库的性能。最重要的就是索引的排序,一定要设置索引排序方式与你要显示的记录排列方式相同,否则需要在每个SELECT后面加入order by id desc,asc。加入order by会降低效率20%左右。尽量通过索引排序不要使用order by 。

第一页:select top 10 * form tab where ……

降序的。
第N页:select top 10 * form tab where …… and id < (select min(id) from (select top (n-1)*10 id from tab where …… ) )

升序的
第N页:select top 10 * form tab where …… and id > (select max(id) from (select top (n-1)*10 id from tab where …… ) )

#4


在guestbook表中,可以设置个陌生人的标志,比如username=0或者其他什么的,
分页就普通的自己计算,也没什么啊

数据量大的话就用 select count(*) from guestbook不要直接去读那个返回的记录,
显示的时候用select top xx取得需要的记录。不要一次全部取

#5


我说select count(*) from guestbook用在分页的时候

#6


http://www.blogjava.net/jfy3d/archive/2005/05/11/4175.html
用这个pro

#7


谢谢

#1


怎么没人?请问有什么方法??能否说写具体实现思路。

#2


http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=205515

#3


自己拼

分页一定要充分利用数据库的性能。最重要的就是索引的排序,一定要设置索引排序方式与你要显示的记录排列方式相同,否则需要在每个SELECT后面加入order by id desc,asc。加入order by会降低效率20%左右。尽量通过索引排序不要使用order by 。

第一页:select top 10 * form tab where ……

降序的。
第N页:select top 10 * form tab where …… and id < (select min(id) from (select top (n-1)*10 id from tab where …… ) )

升序的
第N页:select top 10 * form tab where …… and id > (select max(id) from (select top (n-1)*10 id from tab where …… ) )

#4


在guestbook表中,可以设置个陌生人的标志,比如username=0或者其他什么的,
分页就普通的自己计算,也没什么啊

数据量大的话就用 select count(*) from guestbook不要直接去读那个返回的记录,
显示的时候用select top xx取得需要的记录。不要一次全部取

#5


我说select count(*) from guestbook用在分页的时候

#6


http://www.blogjava.net/jfy3d/archive/2005/05/11/4175.html
用这个pro

#7


谢谢