Foros del Web » Programando para Internet » PHP »

Trabajo con miles de registros

Estas en el tema de Trabajo con miles de registros en el foro de PHP en Foros del Web. Buenos días, Tengo una duda para mostrar registros en pantalla sin que se alente el sitio que estoy desarrollando. Actualmente, tengo dos clientes que tienen ...
  #1 (permalink)  
Antiguo 16/01/2017, 10:36
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 18 años, 11 meses
Puntos: 27
Trabajo con miles de registros

Buenos días,

Tengo una duda para mostrar registros en pantalla sin que se alente el sitio que estoy desarrollando. Actualmente, tengo dos clientes que tienen sus bases de datos con alrededor de 2,000 y 30,000 registros de sus productos. Uno de ellos muestra revistas, periódicos y libros (el de 2,000) y el otro muestra autopartes de distintas marcas de automóviles (el de 30,000).

Los dos muestran sus productos en forma de un atienda en línea, desplegando información como imagen de su producto, nombre o título, descripción, precio, etc., muestro estos registros con el plugin de jQuery DataTables https://datatables.net/ sin embargo, tarda un poco en mostrarse la información, sobre todo con el sitio de autopartes.

Todo está debidamente catalogado y distribuido para que no se muestren los 30,000 registros de golpe, por ejemplo, tengo dividido en categoría, marca, modelo, año, versión, etc., pero aún así, hay categorías que llegan a mostrar más de 2,000 artículos, que muchas veces provoca que tarde al menos unos 30-40 segundos en mostrar el contenido.

Obviamente, este tiempo es un problema para el sitio y para el usuario entonces mi pregunta es: ¿qué recomiendan para tratar con miles de registros y evitar los extensos tiempos de carga?

De antemano, agradezco por sus comentarios.
  #2 (permalink)  
Antiguo 16/01/2017, 12:07
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 3 meses
Puntos: 20
Respuesta: Trabajo con miles de registros

Hola amigo, yo te recomendaría usar paginaciones, independientemente de tus filtros (marco,modelo,año,etc), hacer uso de paginación, para que en caso de que sean muchos registros, mostrar únicamente bloques de 100 - 200 - 500 ... de esa manera no traerás todo de golpe.

Otra cosa que te recomendaría sería usar AngularJS, para hacer la consulta y paginación (te lo facilita bastante). Si tienes tiempo puedes checar por ese lado.
Saludos!
  #3 (permalink)  
Antiguo 16/01/2017, 12:09
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 18 años, 11 meses
Puntos: 27
Respuesta: Trabajo con miles de registros

Si, de echo el jQuery DataTables usa paginación, pero me da la impresión que carga todos los registros de golpe y luego sólo los muestra de acuerdo al número de registros por página (10, 25, 50, 100).

Voy a darle una revisada a AngularJS como me comentas.
  #4 (permalink)  
Antiguo 16/01/2017, 17:24
 
Fecha de Ingreso: diciembre-2015
Ubicación: México
Mensajes: 280
Antigüedad: 8 años, 3 meses
Puntos: 20
Respuesta: Trabajo con miles de registros

O vaya, disculpa, no tengo conocimiento de JQuery DataTables, pero si maneja paginación, entonces sugiero que trates de optimizar el script (PHP)
Ya que con AngularJS también tendrías que traer todo de "golpe", y Angular se encarga de la paginación.

Cómo estas mandando a trear los registros?
Hace poco abri un tema porque tenía un problema con la carga de +250mil registros.
Ahi me hicieron una sugerencia para "agilizar" la carga.
Espero te sirva.
Saludos!
  #5 (permalink)  
Antiguo 16/01/2017, 17:43
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 7 meses
Puntos: 2237
Respuesta: Trabajo con miles de registros

Supongo que la paginación por medio de Javascript sería adecuada cuando se trata de pocos registros, tal vez un máximo de 100, solo por poner un número; pero, en tu caso, definitivamente sería mejor paginar desde PHP y obtener los registros de cada página mediante AJAX (Javascript + PHP)
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 16/01/2017, 23:23
Avatar de AngelKrak  
Fecha de Ingreso: noviembre-2014
Mensajes: 917
Antigüedad: 9 años, 4 meses
Puntos: 91
Respuesta: Trabajo con miles de registros

el plugin datatables tiene el metodo de ajax, solo te carga 10 registros por pagina y asi no se te tarda como dices ya que sin ajax te carga todos los registros y despues los pagina, pero con el metodo ajax solo te cargara 10 resultados por pagina y asi agilizaras la pagina ;)

https://datatables.net/examples/data_sources/ajax.html
Siempre hay que ver la Documentación y los Ejemplos ;)
  #7 (permalink)  
Antiguo 17/01/2017, 10:25
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 18 años, 11 meses
Puntos: 27
Respuesta: Trabajo con miles de registros

AngelKrak, Triby, german_1441, gracias por responder!

Voy a intentar esto último de Ajax, francamente no había visto está opción que me comenta AngelKrak. Lo que estaba usando de jQuery DataTables era simplemente la configuración básica con algunos parámetros avanzados, más no la opción de Ajax.

Lo implemento y les comento los resultados.

Saludos!!
  #8 (permalink)  
Antiguo 17/01/2017, 11:47
 
Fecha de Ingreso: febrero-2011
Mensajes: 85
Antigüedad: 13 años, 1 mes
Puntos: 3
Respuesta: Trabajo con miles de registros

Estoy de acuerdo con Triby

Utiliza Ajax es mas practico y en tu consulta puedes utilizar algo como esto:

"SELECT first " . $tamanoPagina . " skip " . $inicio . " * FROM tuTabla"

$tamanoPagina = numero de registros que quieres mostrar.
$inicio: desde que registro.

Y el control de $tamanoPagina e $inicio, lo puedes llevar en un input type="hidden".

Espero te pueda servir.
  #9 (permalink)  
Antiguo 17/01/2017, 12:13
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 7 meses
Puntos: 52
Respuesta: Trabajo con miles de registros

pues yo para paginar hago
Código SQL:
Ver original
  1. SELECT COUNT(*) FROM tabla WHERE filtros;

luego en un enlace pongo un parametro que indica el registro de inicio
Código HTML:
Ver original
  1. <a href="pagina.php?inicio=20">2</a>
En este caso es la pagina 2 si fuera de 10 en 10
y luego para mostrar cargo la pagina normal
Obtengo por get el parametro de inicio.
Código SQL:
Ver original
  1. "select * from tabla where filtros order by id desc limit ".$_GET['inicio'].",".$registrosporpagina;
__________________
a veces creemos que es algo básico pero al profundizar nos damos cuenta que estábamos tocando solo la cola de la culebra
  #10 (permalink)  
Antiguo 17/01/2017, 12:25
Avatar de Middrel  
Fecha de Ingreso: abril-2005
Mensajes: 835
Antigüedad: 18 años, 11 meses
Puntos: 27
Respuesta: Trabajo con miles de registros

A lo que se refieren es en lugar de utilizar el plugin de JQuery, manejar la paginación de forma más estructurada con PHP + Ajax. Es decir, programar todo esto, podría funcionar, no lo he intentado hasta ahora pero podría ser una buena opción también o algo adicional a considerar.

Etiquetas: miles, registro, registros, trabajo, usuario
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




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