,
知名人士
知名人士
  • 铜币1枚
  • 威望0点
  • 贡献值1点
阅读:785回复:10

请问还有比这个分页效率更好的代码吗???

楼主#
更多 发布于:2004-07-20 17:55
<%@ page language="java" import="java.util.*,java.sql.*" %>
<%@ page contentType="text/html;charset=gb2312"%>
<jsp:useBean id="cn" scope="page" class="myConnection.Conn" /><!--引用数据库操作的bean,自己完成,这里不再赘述-->
<%
int curpage=1;//当前页
int page_record=20;//每页显示的记录数

curpage=Integer.parseInt(request.getParameter("page"));//获取传递的值,需要显示的页
ResultSet rs=cn.rsexecuteQuery("select top "+page_record+" * from tablename where id not in (select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc");
//本查询语句得到的是所要显示的1000页的20条记录,大致思路为——子查询排除需要显示的记录前的所有记录,父查询则对余下的记录进行降序排列
while(rs.next) {
  out.println(rs.getInt("id").toString());
}
rs.close();
%>
--------------------
在我难过的时候,

不管那是什么时候,

我都不喜欢被别人察觉到,

其实也没有什么特别的原因,

只是不喜欢而已。

别告诉别人你今天难受过,

什么也别对别人说,

因为说了也没有用。

我知道,

一切都是过眼云烟。
 
[a=http://my.91qm.com/l/e/leeyupeng/Blog.htm][img]http://my.91qm.com/l/e/leeyupeng/Blog.gif[/img][/a]
水晶心
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
1C#
发布于:2004-07-20 20:03
Re:请问还有比这个分页效率更好的代码吗???
看不懂看不懂~~~ -------------------- 我是尘埃,我很平凡,
但,我很快乐!!!

我不去想是否能够成功,既然选择了远方, 便只顾风雨兼程.............. 我不去想,身后会不会袭来寒风冷雨, 既然目标是地平线, 留给世界的只能是背影~~~
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
2C#
发布于:2004-07-21 08:42
Re:请问还有比这个分页效率更好的代码吗???
调试过吗?sql语句有问题吧。

page_record最好不要这样定义,最好是用户能选择每页多少条纪录。

-------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
3C#
发布于:2004-07-21 08:57
Re:请问还有比这个分页效率更好的代码吗???
("select top "+page_record+" * from tablename where id not in (select top "+(curpage*page_record)+" id from tablename order by id desc) order by id desc");


select id from *----obtain id;
select * from * where id not in id(result set)?这样的sql语句怎么执行得到的都是空集阿
  
-------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
slw4qd
著名写手
著名写手
  • 铜币2枚
  • 威望0点
  • 贡献值0点
4C#
发布于:2004-07-21 12:56
Re:请问还有比这个分页效率更好的代码吗???
问:楼主嵌套查询和limit限定 哪个更快呢?
limit只查询一次 嵌套似乎需要两次呢


你是用得oracle吗?



--------------------
[email protected] [ 2004-07-21 12:59:16 slw4qd 修改 ]
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
5C#
发布于:2004-07-21 17:58
Re:请问还有比这个分页效率更好的代码吗???
mssql好像没有limit,可以用top -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
slw4qd
著名写手
著名写手
  • 铜币2枚
  • 威望0点
  • 贡献值0点
6C#
发布于:2004-07-21 19:33
Re:请问还有比这个分页效率更好的代码吗???
mssql好像没有limit,可以用top

--------------------
好好吃饭,天天睡觉
努力赚钱,娶个老婆


那么mssql支持楼主的这种查询方式吗? -------------------- [email protected]
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
7C#
发布于:2004-07-22 09:02
Re:请问还有比这个分页效率更好的代码吗???
我从一个贴子上看到的,没有实际做过,没有机会 -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
8C#
发布于:2004-07-22 11:11
Re:请问还有比这个分页效率更好的代码吗???
mssql好像没有limit,可以用top

--------------------
好好吃饭,天天睡觉
努力赚钱,娶个老婆

我用的就是limit分页啊 -------------------- [em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074]
[em074]趴在楼下的背上睡得呼呼的Zzzzzz............[em074]
[em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074]

[a=http://home.itdrp.com/akayi/]感情欠费中
           爱情停机中
                       工作寻找中[/a]
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
0000
作家
作家
  • 铜币143枚
  • 威望34点
  • 贡献值1点
9C#
发布于:2004-07-22 11:24
Re:请问还有比这个分页效率更好的代码吗???

//还是那个留言簿
//guestbook.php
//查看留言部分,action=view
include("conn.php");//数据库
$query = "select * from guestbook";
$result = mysql_query($query);
$rows = @mysql_num_rows($result);
$max=$rows;//第一次查询计算总的记录数
if (!isset($_GET['page']))
{
$page=1;
}//这样子写就不会出现notice说page未定义了
$p=ceil($max/10);//根据记录数计算分页数,每页显示10条记录
$low=10*($page-1);
if($page==$p&&($max%10)<>0)
{$x=($max%10);}
 else {$x=10;}//$x决定查询的位置,0-10,11-20.......
if($max==0)
                {$x=0;}
$result = mysql_query("select * from guestbook ORDER BY id DESC limit $low,$x");//第二次查询,用到了limit,结果为每页显示的记录
echo "<table width='760' border='1' cellspacing='0' align='center'>";
echo "<tr><td colspan=4 align='right'><a href=guestbook.php?action=edit>我要留言</a></td>";
echo "<tr><td colspan='4'height='21'>留言数 ".$max." ";
echo "第";
for ($n=1;$n<=$p;$n++)
{
echo "<a href=guestbook.php?page=$n&action=view>".$n."</a> ";
}//用循环显示页码
echo "页";
echo "</td></tr>";
for($i=0;$i<=($x-1);$i++)
{
@mysql_data_seek($result,$i);
$data = @mysql_fetch_array($result);
$name = $data['username'];
$gdate = $data['gdate'];
$content = $data['content'];
$gemail = $data['gemail'];
$id = $data['id'];
$reply = $data['reply'];
echo "<tr>\n<td width=10 height=21>id:".$id."</td>";
echo "<td width=100 height=21>name:".$name."</td>\n";
echo "<td width=150 height=21>add time: ".$gdate."</td>\n";
echo "<td width=200 height=21>email:".$gemail."</td>\n</tr>\n";
echo "<tr><td colspan=4 width=420 height=100 valign='top'>".$content."</td></tr>";
if(!$reply =="")
{
echo "<tr><td bgcolor='#e9e9e9' colspan=4 width=420 height=50 valign='top'>reply:<br>".$reply."</td></tr>";
}
}//显示留言记录
echo "</table>";
mysql_close($Mylink);

初学者,没有什么效率不效率,能用,用到了limit
测试地址: http://10.64.7.185/shop/guestbook.php

--------------------
[em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074]
[em074]趴在楼下的背上睡得呼呼的Zzzzzz............[em074]
[em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074][em074]

[a=http://home.itdrp.com/akayi/]感情欠费中
           爱情停机中
                       工作寻找中[/a]

[ 2004-07-22 11:25:45 0000 修改 ]
[ 2004-07-22 11:26:50 0000 修改 ] [ 2004-07-22 11:28:24 0000 修改 ]
.--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
southeast
著名写手
著名写手
  • 铜币0枚
  • 威望0点
  • 贡献值0点
10C#
发布于:2004-07-22 13:30
Re:请问还有比这个分页效率更好的代码吗???
现在看上去清晰多了。

我也是现在还没有考虑到效率阿安全阿扩展阿什么玩意儿的,关键是没那个时间啊。 -------------------- 好好吃饭,天天睡觉
努力赚钱,娶个老婆
[img]http://www.wait4c.com/bbs/userfiles/2196/2005051614543457820.jpg[/img]
游客

返回顶部