Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/04/2010, 13:43
jkintero
 
Fecha de Ingreso: diciembre-2008
Mensajes: 71
Antigüedad: 15 años, 5 meses
Puntos: 0
Paginar resulset es optimo ?

Hola a todos he utilizado el siguiente codigo para paginar una tabla y mostrar los resultados.

Código:
public ArrayList ejecutaQueryPaginada(String query, int numPagina, 
                        int numRegPagina) {   
    ArrayList alResultado = new ArrayList();
    Connection conBBDD = null;
    Statement st = null;
    ResultSet rs = null;
    try {                   
        conBBDD=getConnection();                   
        st = conBBDD.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
        st.setFetchSize(numRegPagina);
       
        rs = st.executeQuery(query);

        int fila = numRegPagina * (numPagina - 1) + 1;
        int cont = 1;

        ResultSetMetaData md = rs.getMetaData();
        int numeroColumnas = md.getColumnCount();
        ArrayList alRegistro = new ArrayList(numeroColumnas);

   
        for (int i = 1; i <= numeroColumnas; i++) {
            String nomCol = md.getColumnName(i);
            alRegistro.add(nomCol);
        }

        alResultado.add(alRegistro);

        if (rs.absolute(fila) && numRegPagina > 0) {
            do {
                alRegistro = new ArrayList();
                for (int i = 1; i <= numeroColumnas; i++) {
                    alRegistro.add(rs.getString(i));
                }

                alResultado.add(alRegistro);
                cont++;
               
            }
            while (rs.next() && (cont <= numRegPagina));
        }

        Integer numTuplasTotal = new Integer(0);
        if (rs.last()) { 
                            
            numTuplasTotal = new Integer(rs.getRow());
        }
        alResultado.add(0, numTuplasTotal);       
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        if(st!=null) {
            try {
                st.close();
            } catch (SQLException e) {           
                e.printStackTrace();
            }
        }
        if(rs!=null) {               
            try {
                rs.close();
            } catch (SQLException e) {           
                e.printStackTrace();
            }
        }
        if(conBBDD!=null) {
            try {
                conBBDD.close();
            } catch (SQLException e) {               
                e.printStackTrace();
            }
           
        }
    }

    return (alResultado);

}
Mi pregunta es si es mas optimo que realizar la paginacion por medio de un query de la siguiente manera cuando son miles de registros:

Código:
select * from (
      select rownum,nombre,apellido,edad 
       from clientes 
       where fecha between '01/01/2008' and '01/01/2009') a 
where between a.rownum = 40 and a.rownum=60
Actualmente estoy utilizando cuando pagino el resultset por que fue la unica forma que pude realizar para ordenar los datos por las columnas.

Les agradecere sus comentarios, de antemano Gracias..

Última edición por jkintero; 29/04/2010 a las 16:42