"paginar" un conjunto de resultados: ejemplo de Javier Loria

07/04/2005 - 11:55 por Víctor | Informe spam
Buenas.

He estado probando el código de Javier Loria para recuperar los X siguientes
registros (bonito, bonito; quién fuera él), y no entiendo para qué sirve la
segunda consulta.

¿Álguien me hecha una manita?

http://www.configuracionesintegrale...articulo%5

Preguntas similare

Leer las respuestas

#1 Carlos Sacristán
07/04/2005 - 12:31 | Informe spam
Para listar los n elementos siguientes del conjunto de resultados
anterior, el procedimiento de Javier devuelve un parámetro de salida con el
último apellido mostrado.

El apellido es el criterio por el cual se rige la paginación, y
necesitamos saber cuál es el valor a partir del cual queremos listar el
siguiente conjunto de resultados. En vez de tener que recorrernos dicho
conjunto de resultados y almacenar en una variable el último listado (para
ir al siguiente conjunto), el procedimiento ya lo hace por nosotros
almacenándolo en un parámetro de salida que nosotros le volvemos a pasar
como parámetro de entrada con el valor actualizado en la siguiente llamada
al procedimiento.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Víctor" escribió en el mensaje
news:
Buenas.

He estado probando el código de Javier Loria para recuperar los X


siguientes
registros (bonito, bonito; quién fuera él), y no entiendo para qué sirve


la
segunda consulta.

¿Álguien me hecha una manita?




http://www.configuracionesintegrale...?articulo%
5


Respuesta Responder a este mensaje
#2 Víctor
08/04/2005 - 09:20 | Informe spam
Ostras pedrín, es verdad.

Muchas gracias.

Y provecho para otra duda sobre el código: si la consulta para buscar los
datos dura 5 segundos, el hecho de añadirle el TOP no hace que vaya más
rápido, ¿verdad? Porque el TOP lo realiza una vez tiene todo el conjunto de
datos, ¿no?


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Para listar los n elementos siguientes del conjunto de resultados
anterior, el procedimiento de Javier devuelve un parámetro de salida con


el
último apellido mostrado.

El apellido es el criterio por el cual se rige la paginación, y
necesitamos saber cuál es el valor a partir del cual queremos listar el
siguiente conjunto de resultados. En vez de tener que recorrernos dicho
conjunto de resultados y almacenar en una variable el último listado (para
ir al siguiente conjunto), el procedimiento ya lo hace por nosotros
almacenándolo en un parámetro de salida que nosotros le volvemos a pasar
como parámetro de entrada con el valor actualizado en la siguiente llamada
al procedimiento.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Víctor" escribió en el mensaje
news:
> Buenas.
>
> He estado probando el código de Javier Loria para recuperar los X
siguientes
> registros (bonito, bonito; quién fuera él), y no entiendo para qué sirve
la
> segunda consulta.
>
> ¿Álguien me hecha una manita?
>
>



http://www.configuracionesintegrale...?articulo%
5
>
>


Respuesta Responder a este mensaje
#3 Carlos Sacristán
08/04/2005 - 09:54 | Informe spam
Si tienes un ORDER BY, el gestor tendrá que ordenar el conjunto de
resultados obtenidos y posteriormente aplicar el TOP. Esto implica que la
ganancia de tiempo que obtengas será la diferencia de enviar todos los datos
obtenidos por la red o sólo los n primeros. En cualquier caso, siempre será
más eficiente trabajar con menos datos que con más.

Otra cosa es cuando no existe un ORDER BY. Aunque no tiene sentido
limitar el conjunto de resultados a un número limitado sin que exista un
orden, la consulta sí que será más rápida porque en el momento en que
obtenga el número de registros indicados terminará de procesarla.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Víctor" escribió en el mensaje
news:
Ostras pedrín, es verdad.

Muchas gracias.

Y provecho para otra duda sobre el código: si la consulta para buscar los
datos dura 5 segundos, el hecho de añadirle el TOP no hace que vaya más
rápido, ¿verdad? Porque el TOP lo realiza una vez tiene todo el conjunto


de
datos, ¿no?


"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
> Para listar los n elementos siguientes del conjunto de resultados
> anterior, el procedimiento de Javier devuelve un parámetro de salida con
el
> último apellido mostrado.
>
> El apellido es el criterio por el cual se rige la paginación, y
> necesitamos saber cuál es el valor a partir del cual queremos listar el
> siguiente conjunto de resultados. En vez de tener que recorrernos dicho
> conjunto de resultados y almacenar en una variable el último listado


(para
> ir al siguiente conjunto), el procedimiento ya lo hace por nosotros
> almacenándolo en un parámetro de salida que nosotros le volvemos a pasar
> como parámetro de entrada con el valor actualizado en la siguiente


llamada
> al procedimiento.
>
>
> Un saludo
>
> -
> "Sólo sé que no sé nada. " (Sócrates)
>
> "Víctor" escribió en el mensaje
> news:
> > Buenas.
> >
> > He estado probando el código de Javier Loria para recuperar los X
> siguientes
> > registros (bonito, bonito; quién fuera él), y no entiendo para qué


sirve
> la
> > segunda consulta.
> >
> > ¿Álguien me hecha una manita?
> >
> >
>



http://www.configuracionesintegrale...?articulo%
> 5
> >
> >
>
>


Respuesta Responder a este mensaje
#4 Víctor
08/04/2005 - 10:13 | Informe spam
Gracias por la explicación.

"Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
news:
Si tienes un ORDER BY, el gestor tendrá que ordenar el conjunto de
resultados obtenidos y posteriormente aplicar el TOP. Esto implica que la
ganancia de tiempo que obtengas será la diferencia de enviar todos los


datos
obtenidos por la red o sólo los n primeros. En cualquier caso, siempre


será
más eficiente trabajar con menos datos que con más.

Otra cosa es cuando no existe un ORDER BY. Aunque no tiene sentido
limitar el conjunto de resultados a un número limitado sin que exista un
orden, la consulta sí que será más rápida porque en el momento en que
obtenga el número de registros indicados terminará de procesarla.


Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Víctor" escribió en el mensaje
news:
> Ostras pedrín, es verdad.
>
> Muchas gracias.
>
> Y provecho para otra duda sobre el código: si la consulta para buscar


los
> datos dura 5 segundos, el hecho de añadirle el TOP no hace que vaya más
> rápido, ¿verdad? Porque el TOP lo realiza una vez tiene todo el conjunto
de
> datos, ¿no?
>
>
> "Carlos Sacristán" <csacristanARROBAmvpsPUNTOorg> escribió en el mensaje
> news:
> > Para listar los n elementos siguientes del conjunto de resultados
> > anterior, el procedimiento de Javier devuelve un parámetro de salida


con
> el
> > último apellido mostrado.
> >
> > El apellido es el criterio por el cual se rige la paginación, y
> > necesitamos saber cuál es el valor a partir del cual queremos listar


el
> > siguiente conjunto de resultados. En vez de tener que recorrernos


dicho
> > conjunto de resultados y almacenar en una variable el último listado
(para
> > ir al siguiente conjunto), el procedimiento ya lo hace por nosotros
> > almacenándolo en un parámetro de salida que nosotros le volvemos a


pasar
> > como parámetro de entrada con el valor actualizado en la siguiente
llamada
> > al procedimiento.
> >
> >
> > Un saludo
> >
> > -
> > "Sólo sé que no sé nada. " (Sócrates)
> >
> > "Víctor" escribió en el mensaje
> > news:
> > > Buenas.
> > >
> > > He estado probando el código de Javier Loria para recuperar los X
> > siguientes
> > > registros (bonito, bonito; quién fuera él), y no entiendo para qué
sirve
> > la
> > > segunda consulta.
> > >
> > > ¿Álguien me hecha una manita?
> > >
> > >
> >
>



http://www.configuracionesintegrale...?articulo%
> > 5
> > >
> > >
> >
> >
>
>


Respuesta Responder a este mensaje
#5 Ricardo Passians
08/04/2005 - 23:12 | Informe spam
Si tienes un ORDER BY, el gestor tendrá que ordenar el conjunto de
resultados obtenidos y posteriormente aplicar el TOP. Esto implica que la
ganancia de tiempo que obtengas será la diferencia de enviar todos los


datos
obtenidos por la red o sólo los n primeros.



Ok, pero en general, de existir un indice basado en las columnas del order
by, el proceso se puede agilizar notablemente. De igual modo cuando el orden
sea el de la clave primaria (o no se incluya el "order by") también la
velocidad aumentará mucho debido a que ya están físicamente ordenados por la
clave primaria.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida