Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Como hacer querys por partes??

Estas en el tema de Como hacer querys por partes?? en el foro de Mysql en Foros del Web. Hola soy novato con BD...y mi problema es el siguiente: Estoy haciendo una consulta a mi BD (Mysql) usando AJAX para llenar una tabla HTML ...
  #1 (permalink)  
Antiguo 06/12/2007, 09:44
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Como hacer querys por partes??

Hola soy novato con BD...y mi problema es el siguiente:

Estoy haciendo una consulta a mi BD (Mysql) usando AJAX para llenar una

tabla HTML en mi pagina web. El problema es que si son muchos registros se

demora mucho en la consulta y se detiene la ejecucion del script....

He leido acerca de la optimizacion de consultas....pero quisiera saber:

¿ Hay alguna manera de realizar el query para obtener los registros de 1000 en

1000 por ejemplo, para ir llenando mi arreglo JSON? Usar limit no me serviria

porque obtendria solo una parte de los registros q m interesan....

Gracias por su ayuda.......
  #2 (permalink)  
Antiguo 06/12/2007, 09:51
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Como hacer querys por partes??

Lyendo contextualmente tu problema hay 2 dudas que me saltan
1) Porque no extiendes el tiempo de ejecucion de los scripts
2) Porque tienen que ser tantos registros y sin paginar? nose que informacion es, pero por lo general ya mas de 50 registros es innecesario verlos, pero nose que es lo que estas mostrando, de igual forma deberias paginar la informacion, si no quieres inventar la rueda nuevamente pues te recomiendo utilizar paginator http://jpinedo.webcindario.com/scrip..._avanzado.html


Cita:
Iniciado por martinoso Ver Mensaje
Hola soy novato con BD...y mi problema es el siguiente:

Estoy haciendo una consulta a mi BD (Mysql) usando AJAX para llenar una

tabla HTML en mi pagina web. El problema es que si son muchos registros se

demora mucho en la consulta y se detiene la ejecucion del script....

He leido acerca de la optimizacion de consultas....pero quisiera saber:

¿ Hay alguna manera de realizar el query para obtener los registros de 1000 en

1000 por ejemplo, para ir llenando mi arreglo JSON? Usar limit no me serviria

porque obtendria solo una parte de los registros q m interesan....

Gracias por su ayuda.......
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #3 (permalink)  
Antiguo 06/12/2007, 10:35
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como hacer querys por partes??

...si es cierto son muchos registros pero los estoy mostrando con prototype.js, para darle

scroll a mi tabla, pero si aumento el tiempo de ejecucion de los scripts de igual forma tardaria

mucho en llenar la tabla....y por requerimientos del sistema necesito mostrar la tabla

completa....Por eso quiero ver como hago la consulta por partes y entonces ir armando mi

tabla.......
  #4 (permalink)  
Antiguo 06/12/2007, 11:01
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Como hacer querys por partes??

Cita:
Iniciado por martinoso Ver Mensaje
...si es cierto son muchos registros pero los estoy mostrando con prototype.js, para darle

scroll a mi tabla, pero si aumento el tiempo de ejecucion de los scripts de igual forma tardaria

mucho en llenar la tabla....y por requerimientos del sistema necesito mostrar la tabla

completa....Por eso quiero ver como hago la consulta por partes y entonces ir armando mi

tabla.......
a que te refieres por partes???? yo lo entiendo paginando, y te puse una solucion para eso en mi respuesta anterior.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #5 (permalink)  
Antiguo 06/12/2007, 12:00
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como hacer querys por partes??

ok... m refiero a realizar el query de manera tal q si voy a obtener como resultado 5000

registros, por ejemplo, pueda hacer consultas q m traigan de la BD solo 1000 registros a la

vez, y voy llenando mi arreglo JSON...de esa manera el tiempo q tarda la consulta seria

menor. Claro el detalle es como hacer para traerme los registros correctos...tal como si lo

hiciera con un solo query...Eso no se si es posible hacerlo....
  #6 (permalink)  
Antiguo 06/12/2007, 12:49
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Como hacer querys por partes??

Cita:
Iniciado por martinoso Ver Mensaje
ok... m refiero a realizar el query de manera tal q si voy a obtener como resultado 5000

registros, por ejemplo, pueda hacer consultas q m traigan de la BD solo 1000 registros a la

vez, y voy llenando mi arreglo JSON...de esa manera el tiempo q tarda la consulta seria

menor. Claro el detalle es como hacer para traerme los registros correctos...tal como si lo

hiciera con un solo query...Eso no se si es posible hacerlo....
te corrijo en algo, el tiempo que tarda la consulta es el mismo, lo que cambia es el tiempo en que mostraria los datos en pantalla, pk escribiria en el cliente cada 1000 registros, y no los 5000 de una vez, igual, no entiendo para que tendrias que pasar 5,000 registros a una pantalla, pero en fin, no voy a cuestionar esa parte, solo espero que no estes indagando por una solucion equivocada y es por eso mismo que se te pregunta en un inicio que es lo que estas haciendo, muchas veces le buscamos solucion al problema equivocado, si me pudieras ayudar con eso, con mucho gusto intento hacer algo, pero primero quiero estar seguro.
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #7 (permalink)  
Antiguo 06/12/2007, 14:27
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como hacer querys por partes??

si..realmente son muchos datos para una pantalla..pero por el momento debo mostrarlos...

y ciertamente el tiempo de consulta es el mismo, revisando veo que el problema es:

while(rs.next()) {
//aca voy llenando mi arreglo json
arreglo_json.add(rs.getString("campo"));
//y el resto de los campos q necesito
}

si monto en el objeto json muchos registros tarda mucho para obtener la respuesta en:

miarreglo = http_request.responseText.parseJSON();

y asi poder con js armar la tabla en cuestion...

Mi pregunta es:

Puedo de alguna manera pasar a mi javascript el arreglo json con pocos registros?

se que se devuelve el arreglo con todos los registros....no se si existe algun limite

en la cantidad de elementos q puedo montar en el arreglo json...

quizas son muchos datos los que estoy recibiendo con la solicitud de AJAX...
  #8 (permalink)  
Antiguo 06/12/2007, 14:33
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Como hacer querys por partes??

el problema no se resuelve en el javascript, se resuelve en el query que se ejecuta en el servidor, y con LIMIT lo puedes resolver, recuerda que LIMIT tiene 2 parametros desde donde y cuantos
LIMIT 100, 25 o LIMIT 100 etc etc
es decir, que lo que debes de armar bien es tu query como que estuvieras paginando, pero en lugar de paginar en varias paginas, lo que haras es que luego de hacer un calculo de elementos, imprimirlos en pantalla, y ejecutar la siguiente consulta, la de los siguientes registros, y asi hasta que termines.

1) Calcular el numero total de registros a devolver (segun el ejemplo 5,000)
2) hacer un bucle en javascript de 0 a 4 (i=0 a 4)
3) no_registros=1000
4) query con limit al final: LIMIT i*no_registros,no_registros
5) luego de ejecutar el query, imprimir en html
6) next

algo asi, recuerda que esta escrito segun lo he ido pensando, pero es una idea basica.

Cita:
Iniciado por martinoso Ver Mensaje
si..realmente son muchos datos para una pantalla..pero por el momento debo mostrarlos...

y ciertamente el tiempo de consulta es el mismo, revisando veo que el problema es:

while(rs.next()) {
//aca voy llenando mi arreglo json
arreglo_json.add(rs.getString("campo"));
//y el resto de los campos q necesito
}

si monto en el objeto json muchos registros tarda mucho para obtener la respuesta en:

miarreglo = http_request.responseText.parseJSON();

y asi poder con js armar la tabla en cuestion...

Mi pregunta es:

Puedo de alguna manera pasar a mi javascript el arreglo json con pocos registros?

se que se devuelve el arreglo con todos los registros....no se si existe algun limite

en la cantidad de elementos q puedo montar en el arreglo json...

quizas son muchos datos los que estoy recibiendo con la solicitud de AJAX...
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #9 (permalink)  
Antiguo 06/12/2007, 14:35
Avatar de xcars  
Fecha de Ingreso: mayo-2005
Ubicación: El Salvador
Mensajes: 753
Antigüedad: 18 años, 11 meses
Puntos: 4
Re: Como hacer querys por partes??

el numero en el bucle lo puedes calcular asi:

numero total de registros entre el numero de registros a imprimir

total_registros/1000 si son 1000 los que quieres imprimri y redondeas al numero siguiente, si queda 1.23 la relacion lo haces hasta 2, me explique bien?
__________________
Con Microaplicaciones puedes hacer tu tienda en línea de forma sencilla y rápida, sin costos ocultos y con mucha responsabilidad.
  #10 (permalink)  
Antiguo 06/12/2007, 15:39
 
Fecha de Ingreso: diciembre-2007
Mensajes: 34
Antigüedad: 16 años, 4 meses
Puntos: 0
Re: Como hacer querys por partes??

uhmmm ok...bueno ahora me toca probar a ver como me va, y asi resuelvo el asunto de una vez....
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 22:00.