读书人

为什么小弟我的分页程序特别慢

发布时间: 2012-01-08 22:48:50 作者: rapoo

为什么我的分页程序特别慢
这是我的分页bean,数据库记录少的时候翻页还可以忍受,记录多了特别慢,现在总记录有3K多条翻页慢的不行要等10几秒,可是第一页出的特别快,用这个分页bean查询的时候也特别快,搞不懂是sql语句的问题还是程序的问题,数据库用的jdbc:odbc,桥接的access
package leozhzh;
import java.io.*;
import java.sql.*;
import leozhzh.*;
/**
*每次更改ssql后必须重新设置rowCount,
*
* @leozhzh
*/
public class PageNumber {
private int rowCount=1, //总的记录数。
pageSize=20, //每页显示的记录数,默认20。
showPage=1; //设置欲显示的页码数。
private FileBean[] files = null;
private String ssql = null;


public void setssql(String temp){
ssql = temp;
}
public String getssql(){
return ssql;
}
public FileBean[] getfiles(){
String temp = null;
if(showPage!=1&&showPage> 0)//不是第一页
{
temp = "select top "+pageSize+ " * from 税法 where 1=1 "+ssql+
" and id not in (select top "
+pageSize*(showPage-1)+
" id from 税法 where 1=1 "+ssql+ " order by 发布时间 desc,id) order by 发布时间 desc,id ";
}
else//第一页
{
temp = "select top "+pageSize+ " * from 税法 where 1=1 "+ssql+ " order by 发布时间 desc,id ";
}

files = new FileBean[pageSize];//初始化files

try{
DbConn conn = new DbConn();
ResultSet rs = conn.executeQuery(temp);


int ii=0;
while(rs.next()){
leozhzh.FileBean ofile = new FileBean();
ofile.setFileId(rs.getString( "id "));
ofile.setFileContent(rs.getString( "内容 "));
ofile.setFileDate(rs.getString( "发布时间 "));
ofile.setFileName(rs.getString( "文件名称 "));
ofile.setFileType(rs.getString( "类别 "));
ofile.setFileWenhao(rs.getString( "文号 "));
files[ii] = ofile;
ii++;
}
conn.close();
}
catch(Exception e){
System.err.println( "PageNumber.getFiles(): " + e.getMessage());
}
//返回数组
return files;
}
/*
*设置总记录数
*/
public void setrowCount() {
try{
DbConn conn = new DbConn();
ResultSet rs = conn.executeQuery( "select count(*) from 税法 where 1=1 "+ssql);
rs.next();
rowCount = rs.getInt(1);
conn.close();
}
catch(Exception e){
System.err.println( "PageNumber.setRowCount(): " + e.getMessage());
}


}
public int getrowCount(){
return rowCount;
}
/*
*设置总的页数
*/
public int getpageCount() {
return (rowCount%pageSize)==0?(rowCount/pageSize):(rowCount/pageSize+1);
}
/*
*设置显示第几页
*/
public void setshowPage(int n) {
showPage=n;
}
public int getshowPage() {
return showPage;
}
/*
*每页显示的记录数
*/
public void setpageSize(int n) {
pageSize=n;

}
public int getpageSize() {
return pageSize;
}
}



[解决办法]
自己顶一下
[解决办法]
这样写sql是不对的,数据库操作的开销太大.
其实一般数据库都有特定的用于提取从第m条记录开始的连续n条记录的操作.
具体自己百度一下,以前弄过,现在好久没弄了,不记得了:)
[解决办法]
shit
[解决办法]
select * from emp where id between 10 and 20

读书人网 >Java Web开发

热点推荐