![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|
|
#1
|
||||
|
||||
|
Cita:
He usado 25000 líneas para maximizar los resultados y he realizado las búsquedas utilizando las dos formas; La inicial (secuencial) y usando dos listas para obtener búsqueda dicotómica. Sorpredentemente al buscar un único elemento, casi no se aprecia, lo que significa que la secuencial se hace más rápido de lo que yo pensaba; Ahora, si el proceso se maximiza (por ejemplo haciendo 1000 búsquedas seguidas) la diferencia es apreciable (más que apreciable). Revisad el código si queréis, veréis que la diferencia para usar la lista auxiliar son unas pocas líneas. La diferencia está en usar:
o esto:
Link al ejemplo.
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. Última edición por Neftali [Germán.Estévez] fecha: 21-06-2007 a las 12:10:15. Razón: Corregido el link |
|
#2
|
||||
|
||||
|
Realmente impresionante los tiempos Neftali.
Dejo una pregunta: ¿no estaremos reinventando la rueda? Aunque no he estudiado a fondo la implementación de un índice de Bases de datos, se supone que es muy parecido, entonces, ¿por qué implementar nosotros ese índice?(Básicamente es lo que hace Neftali) ya que tenemos la Base de Datos, que lo haga ella . Si tenemos el ID, y ese campo es clave primaria de la tabla, hacer una consulta del tipo: "select NombreCliente from clientes where id = 32" debe ser inmediata. Si la consulta incluye parámetros y está preparada de antemano, más aún. Si hablamos de bases de datos en red, peor aún, ya que otro usuario (o el mismo usuario desde otra ventana) puede insertar/borrar/modificar un cliente y tenemos que recargar esos datos del servidor, o tendremos que implementar un servicio de sincronización... o sea, que nos vamos metiendo en camisas de once varas. Quizás este punto no lo haya tenido en cuenta david_uh, no sé, ya nos contará. Creo que lo dejo claro, tirar siempre de la base de datos y que me resuelva el problema. Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. Última edición por Lepe fecha: 21-06-2007 a las 16:10:57. |
|
#3
|
||||
|
||||
|
Cita:
Supongo que si empezaramos de cero y los datos los tuvieramos en la Base de Datos, pues tal vez esa sería la mejor solución (y digo tal vez, porque no conocemos más detalles del problema en concreto). También estaría la posibilidad de un TClientDataSet, dependiendo del tráfico de red generado y de las consultas que se fueran a relalizar. Si se necesitan velocidad y muchas consultas de este tipo, esto puede ser una solición también óptima, ya que no necesita tráfico de red (sólo la carga inicial) y la velocidad en local es inigualable (por muchos íncides y preparadas que tengamos las consultas). Lo de siempre, no creo que exista una mejor solución para todos los casos, depende, depende, depende,...
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#4
|
||||
|
||||
|
De verdad que no entiendo porqué no usar un clientdataset u otro dataset en memoria y un dbgrid. Por otra parte, algo pasa con el ejemplo, que lo ejecuto y cargo los datos pero éstos nunca aparecen ni la busqueda presenta nada. ¿Hay algo que no sepa?
// Saludos |
|
#5
|
||||
|
||||
|
Cita:
¿No será el tema del separador en el DATOS.TXT? Que no te lo está cogiendo bien; Recuerdo cuando hablamos del tema (hace no mucho en otro hilo), que si estaban configurados distintos había problemas. No todas formas no lo tengo claro, porque en la cadena de conexión ya va incluído el ; ![]() ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#6
|
||||
|
||||
|
En efecto, es cosa del separador. No recuerdo qué resolvimos en el otro tema pero al parecer no toma en cuenta lo especificado en la cadena. Lo que hice fue cambiar los ; por las , en el archivo original y ya jaló. Tardé un poco porque son muchos datos
![]() // Saludos |
|
#7
|
||||
|
||||
|
Cita:
Yo huiera empezado por una punta, tú por la otra y los 25.000 en un rato... ![]()
__________________
Germán Estévez => Web/Blog Guía de estilo, Guía alternativa Utiliza TAG's en tus mensajes. Contactar con el Clubdelphi ![]() P.D: Más tiempo dedicado a la pregunta=Mejores respuestas. |
|
#8
|
||||
|
||||
|
execelente demostracion neftali gracias
|
|
#9
|
||||
|
||||
|
saben me entro una paranoia con lo que dijo roman acerca de que otro user podria borrar un cliente y como la lista es estática pues desencadenaria un error catastrófico que les parece si mejor pongo el form a su dispocición para cualquier aporte sugerencia o si tengo que rehacerlo no hay problema estaré muy agradecido por sus aportes
pd:- la base de datos es el directorio Rimacy que lo copiamos al directorio Data de mysql, estan en la version 5 y son de tipo inodb. el fuente esta escrito en delphi 6 |
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| .txt a listbox | molinero1 | Varios | 3 | 26-04-2007 15:03:07 |
| busqueda dentro de en un listbox | Max_E. | Varios | 7 | 01-10-2006 07:51:52 |
| listbox | gsilvei | Varios | 2 | 06-09-2006 04:20:44 |
| Uso de ListBox | Luli | Varios | 3 | 14-04-2005 19:26:30 |
| listbox | cesarjbf | OOP | 1 | 16-10-2003 13:17:21 |
|