首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

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

2012-01-08 
为什么我的分页程序特别慢这是我的分页bean,数据库记录少的时候翻页还可以忍受,记录多了特别慢,现在总记录

为什么我的分页程序特别慢
这是我的分页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

热点排行