FoxPro/Visual FoxPro - Para mejorar rutina de busqueda en una tabla

   
Vista:

Para mejorar rutina de busqueda en una tabla

Publicado por alexcoinc (10 intervenciones) el 27/11/2012 15:52:44
Se tiene un optiongroup en el cual elijo si quiero buscar una cadena que empice o que contenga
lo que el usuario digite.

La opción busca lo que empiece por la cadena digitada por el usuario.
------------------------------------------------------------------------------------------------------------
If thisform.Optiongroup2.value=2
If ThisForm.Optiongroup1.Option1.value=1
cadena="select nombre as nom, codigo as doc from (alltrim(rutax)+'dima') "+;
"where alltrim(this.value) $ alltrim(nombre) "+;
"order by nom into cursor cur_dima"
ThisForm.List1.rowsource=cadena
nomdx=cur_dima.nom
thisform.refresh
Else
cadena="select nombre as nom, codigo as doc from (alltrim(rutax)+'dima') "+;
"where alltrim(this.value) $ codigo order by doc into cursor cur_dima"
ThisForm.List1.rowsource=cadena
nomdx=cur_dima.nom
thisform.refresh
Endif
Else
****** aqui sera lo que contenga
***************************************
If ThisForm.Optiongroup1.Option1.value=1
cadena="select nombre as nom, codigo as doc from (alltrim(rutax)+'dima') "+;
"where alltrim(nombre) LIKE ALLTRIM(this.value)+'%' "+;
"order by nom into cursor cur_dima"
ThisForm.List1.rowsource=cadena
nomdx=cur_dima.nom
thisform.refresh
Else
cadena="select nombre as nom, codigo as doc from (alltrim(rutax)+'dima') "+;
"where codigo LIKE ALLTRIM(this.value)+'%' order by doc into cursor cur_dima"
ThisForm.List1.rowsource=cadena
nomdx=cur_dima.nom
thisform.refresh
Endif
Endif

Esto funciona bien, cuando la tabla es pequeña....digan ustedes ...unos 20,000 registros pero en una tabla con 150,000 registros o mas , se hace muy lenta.

Que puedo hacer..o que rutina me pueden facilitar !!

Gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Para mejorar rutina de busqueda en una tabla

Publicado por alberto (399 intervenciones) el 28/11/2012 03:42:39
para optimizar tus consultas deberias crear un indice en la tabla por el campo en que usas el where , prueba y veras como cambia la velocidad de respuesta.
saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Para mejorar rutina de busqueda en una tabla

Publicado por alexcoinc (10 intervenciones) el 28/11/2012 14:33:18
Gracias por contestar.

Pero si te das cuenta la consulta es SQL y segundo para qué sirve un indice si voy a buscar lo que este contenido en una campo...para nada vez !!...los indices sirven para hallar la cadena que empiece..pero no para lo que este contenido....que es lo que quiero hacer....

Alguna otra idea ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Para mejorar rutina de busqueda en una tabla

Publicado por neo (1601 intervenciones) el 29/11/2012 03:33:58
Yo utilizo la función Seek
Solo que para este tipo de consulta, debes darte una idea de como complementar de tal forma que reducido a un solo dato buscarlo con Seek o puedes cambiarlo a un índice compuesto. Es asi como cada programador se da una idea de como dar soluciones.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Para mejorar rutina de busqueda en una tabla

Publicado por neo (1601 intervenciones) el 29/11/2012 03:35:06
Yo utilizo la función Seek
Solo que para este tipo de consulta, debes darte una idea de como complementar de tal forma que reducido a un solo dato buscarlo con Seek o puedes cambiarlo a un índice compuesto. Es asi como cada programador trata de crear soluciones.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar