Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Consulta SQL lenta con 10 000 registros

Hola buen dia a todos.

En mi programa realizo una consulta que me devuelve toda una tabla que contiene 10 000 registros y los coloco en 3 listbox pero se torna muy lento. Uso mysql como motor de base de datos y uso los componentes Zeos Lib

Mi codigo es este:

Código Delphi [-]
ZQuery1.Close;
  ZQuery1.SQL.Clear;
  ZQuery1.SQL.Add('SELECT * FROM productos ORDER BY nombre ASC');
  ZQuery1.Open;
  ZQuery1.First;
  while not ZQuery1.Eof do
  begin
     ListBox1.Items.Add(ZQuery1.FieldByName('id').AsString);
     ListBox2.Items.Add(ZQuery1.FieldByName('nombre').AsString);
     ListBox3.Items.Add(FloatToStrF(ZQuery1.FieldByName('precio').AsFloat, ffNumber, 4, 2));
     ZQuery1.Next;
  end;

Mi consulta mediante phpmyadmin tarda 0.5 seg entonces creo que el problema esta al llenar los listbox pero no tengo idea de como optimizarlo ...

Gracias por su tiempo .
Responder Con Cita
  #2  
Antiguo 19-11-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

¿ Y no te sirve usar el equivalente Zeos del TDBLookupComboBox ? De ese modo te estarías ahorrando la carga de los ListBox.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
ecfisa .. voy a checar si carga mas rapido y comento gracias ...
Responder Con Cita
  #4  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
ecfisa .. Disculpa pero como se usa el TDBLookupComboBox .. no encuentro ejemplos :S ... gracias
Responder Con Cita
  #5  
Antiguo 19-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y pregunto: ¿para qué se puede necesitar tener 10000 registros en un listbox o un combobox o un... lo que sea?
Responder Con Cita
  #6  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Pues mira el programa es para una tienda de abarrotes entonces tengo una base de datos con 10 000 articulos, entonces cuando el programa se inicia en el formCreate pues lleno los 3 listbox.

Y si por ejemplo agrego un nuevo articulo, modifico o elimino un articulo de la base de datos el form principal pues lo tengo que refrescar con los nuevos datos ..
Responder Con Cita
  #7  
Antiguo 19-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Y si en lugar de 10000, tuviera por ejemplo 1000000000000000000000, ¿cómo lo harías?
Responder Con Cita
  #8  
Antiguo 19-11-2011
Avatar de olbeup
olbeup olbeup is offline
Miembro
 
Registrado: jul 2005
Ubicación: Santiago de la Ribera (España)
Posts: 685
Poder: 19
olbeup Va camino a la fama
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

¿ Y no te sirve usar el equivalente Zeos del TDBLookupComboBox ? De ese modo te estarías ahorrando la carga de los ListBox.

Un saludo.
Y que ganas con los 10.000 artículos cargados en el ListBox, aparte de consumir memoria innecesariamente, Cuando el cliente elija un artículo de tu ListBox en el 7501, ¿que tienes que leer tú? los 7500 restantes para localizar tal artículo, nose pero creo que la solución que te ha dado ecfisa, creo que es la correcta.

Por que no realizar una búsqueda con una SQL por medio de un Edit, el resultado seria 10.000 veces más rápido que la de tu ListBox, o cómo dice casimiro notevi: Y si en lugar de 10000, tuviera por ejemplo 1000000000000000000000, ¿cómo lo harías?


Un saludo.

Última edición por olbeup fecha: 19-11-2011 a las 21:20:47.
Responder Con Cita
  #9  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Si tienen razon, tengo que rediseñar eso, voy a buscar la manera de optimizar y no cargar muchos datos.

Mi idea era esta.

Que el vendedor tuviera a la mano el catalogo de sus articulos, por que pasa que saben qué articulo quieren, pero no saben el codigo de barras, ni el nombre exacto como se dio de alta el articulo ni el precio, entonces si empieza a escribir el codigo de barras en el evento onChange pues se ORDENAn los articulos por codigo, si es por nombre se ordenan por Nombre de articulo ascendente y el precio igual, y como relacioné los 3 listbox, al seleccionar un item en cualquiera de los 3 listbox en los demas tambien se selecciona su correspondiente informacion, ojalá que me haya explicado.



Se me acaba de ocurrir no cargar los datos si no una parte y conforme al evento onchange hacer la consulta y listar los registros necesarios ...

Voy a probar a ver que tal me va ... Gracias ..

Cualquier opinion se agradece ...
Responder Con Cita
  #10  
Antiguo 19-11-2011
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
Caminante Va camino a la fama
Bueno eso no justifica el uso de los listbox en tal caso podrias usar un DBGrid pero igual no es muy util llenar tantos datos. Dificilmente el usuario se pondra a recorrer toda esa lista.
Responder Con Cita
  #11  
Antiguo 19-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Gracias a todos, ecfisa, Casimiro Notevi, olbeup, Caminante, gracias por sus consejos y opiniones.

La solucion sin despegarme de la idea, es que en el evento OnChange haga la consulta
Ejemplo.

Código SQL [-]
Select * from productos where nombre like 'coca%' order by nombre asc limit 0,50

y me traiga solo 50 registros que coincidan con el patron coca.

Quiza este necio con lo mismo, pero según yo es más fácil que en los TEdit que estan arriba de cada listbox sea la busqueda y se carguen los datos semejantes al patron de busqueda por que en las tienditas pues ya ven que no todo tiene codigo de barra
o tienen que pasar el producto al vendedor para que el vendedor pase el codigo de barra y diga cuanto vale el producto. y
las personas pues dicen que cuanto vale esto, y cuanto vale lo otro, y los niños para que me alcanza.

Creo que asi tienen a la mano los nombres y precios de manera rapida.
Responder Con Cita
  #12  
Antiguo 20-11-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.096
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Verás qué diferencia tan enorme
Responder Con Cita
  #13  
Antiguo 20-11-2011
Avatar de ethangio
ethangio ethangio is offline
Miembro
 
Registrado: jul 2008
Posts: 63
Poder: 16
ethangio Va por buen camino
Casimiro Notevi ..... Gracias ya quedo listo solo cargar los registros necesarios ... espero mas adelante poder ayudar a alguien mas ... como me han ayudado ..

Saludos ..
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta sql lenta la primera vez lledesma Conexión con bases de datos 2 07-07-2008 11:58:36
Ayuda con consulta lenta, lenta, lenta Gregory Mazon Firebird e Interbase 22 27-06-2007 09:56:38
Consulta muy lenta Walterdf Conexión con bases de datos 2 25-08-2004 18:37:57
Insercion masiva de registros MUY LENTA Balda Firebird e Interbase 10 24-03-2004 21:40:21
lenta la consulta. digital Conexión con bases de datos 2 10-09-2003 15:38:13


La franja horaria es GMT +2. Ahora son las 12:26:41.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi