6 messages in com.mysql.lists.mysql-esRE: Seleccion con mysql
FromSent OnAttachments
Francisco Ruiz20 Jul 2006 18:53 
Jordi Escola (Pricewin)21 Jul 2006 02:06 
Grover Campos A.21 Jul 2006 07:30 
Galo Izquierdo21 Jul 2006 08:06 
jesc...@pricewin.net21 Jul 2006 08:16 
Jordi Escola (Pricewin)24 Jul 2006 05:08 
Subject:RE: Seleccion con mysql
From:Grover Campos A. (gcam@ing.puc.cl)
Date:07/21/2006 07:30:54 AM
List:com.mysql.lists.mysql-es

Siento estar en desacuerdo con esa opción que Jordi propone, lo que sucedería
con esa opción es lo siguiente:

1.- Realiza la consulta, MySQL carga los 10mil registros que le da a apache,
quien tiene que guardar memoria para todos ellos. 2.- mysql_data_seek, lo que hace es buscar en memoria entre los 10mil registros
y presentar los correspondientes 50. 3.- El usuario cambia de página y vuelve al paso 1.

Si tu aplicación va a tener un solo usuario, o si tu apache tiene memoria por
encima de los 4Gb o tienes una granja de servidores que te permita tal lujo yo
creo que sería una opción "suficiente" (no por eso eficiente).

Me parece que la mejor opción es usar LIMIT, es decir que mysql se encargue de
sacar solamente los registros necesarios, así te limitas a tener en memoria sólo
los registros que estás mostrando/consultando. La consulta sería algo así:

SELECT * FROM tabla [WHERE ...] LIMIT inicio, registros;

Donde inicio es el registro inicial del grupo a mostrar, así por ejemplo si
estás mostrando la página 3 el inicio sería: ((3 - 1) * 50) + 1 = 101 <-- inicio En general: inicio = ((pagina - 1) * registros) + 1

Y registros es el total de registros a mostrar a partir del registro inicio, en
tu caso 50.

De esta forma MySQL sólo le dará a apache los 50 registros que debe mostrar,
compara el consumo de tener en memoria 50 registros contra 10 mil registros por
vez.

Espero te quede claro.

PD: No quiero con esto decir que la opción de Jordi fuera mala, a lo mejor él te
dio una salida rápida a tu problema por si era muy urgente, así que quede claro
que no estoy menospreciando su ayuda.

Saludos

-----Original Message----- From: Jordi Escola (Pricewin) [mailto:jesc@pricewin.net] Sent: Viernes, 21 de Julio de 2006 5:07 To: Francisco Ruiz; mysq@lists.mysql.com Subject: Re: Seleccion con mysql

Una opcion simple...

Puedes hacer un select * from tabla y luego posicionarte en los n*50 registros... donde n es una variable que vas arrastrando cada vez que el ususario le de a pagina nueva....

mysql_data_seek($result,($pagina-1)*30);

donde ...

$result= resultado de mysql_query $pagina= la pagina actual que estas.... 30.. el numero de registros que quieres mostrar...

----- Original Message ----- From: "Francisco Ruiz" <fru@hidrocalidos.com> To: < > Sent: Friday, July 21, 2006 3:54 AM Subject: Seleccion con mysql

bueno, voy empezando con esto y veo que aqui se ayudan mucho, entonces tal vez podrian hecharme la mano con esto.

ya tengo my base de datos en mysql llena y ya la puedo mostrar con php y sus funciones de mysql

pero mi tabla tiene mas de 10,000 registros entonces no los quiero mostrar todos en la misma página... me gustaria poder mostrar de 50 en 50 entonces no se como hacerle,

tal vez seleccionando con algo asi

$query = "SELECT * FROM tprofile";

pero hay limites algo asi como LIMIT 50 y si existiera como le digo que la proxima vez empieze a partir del numero 50?

bueno, de antemano gracias.