Busqueda de Datos

Tengo una tabla de 1'200,000 registros, la columna DESTINATARIO contiene los datos de los clientes que necesito buscar. Por Ejem. Para buscar todos los Perez Rodriguez, estoy empleando lo siguiente:
SELECT codigo,destinatario,direccion,costo
FROM maestro
WHERE destinatario LIKE '% Perez Rodriguez%'
El problema es que con esta instrucción la búsqueda tarda aprox. 3 minutos, la demora era casi igual cuando la tabla tenia 300 mil registros. Deseo su ayuda a ver si con otro tipo de instrucción puedo bajar el tiempo de búsqueda a por lo menos 30 segundos. Con campos indexados como CODIGO, y usando la instruccion SEEK, no tengo problemas, la respuesta a la búsqueda es inmediata.
Espero su ayuda y Gracias

1 Respuesta

Respuesta
1

Como va tu caso te digo: hay varias formas de realizar una búsqueda rápida en foxpro! No te diré que mi forma es la única... tampoco que es la superior... pero si soy sincero en decirte que a mi y a otros usuarios que me han consultado, nos ha servido!

Puedes hacer la búsqueda directamente sobre tu tabla maestro, a través de un campo. Por ejemplo: escribes en un text el código... presionas enter y que te aparezcan los datos coincidentes en un control grid (o en otros textos). Pueden ser 2 formas:

En el evento KeyPress del text1, coloca un código como este:

**--1 - Con un filtro sobre la tabla

IF nKeyCode = 13 &&Presionamos <ENTER>

SELECT maestro

SET FILTER TO maestro.código = VAL(THISFORM.Text1.Value)

THISFORM.Refresh

ENDIF

o si no, en el mismo evento, podes colocar un código como este:

**--2 - Con un comando LOCATE

IF nKeyCode = 13 &&Presionamos <ENTER>

SELECT maestro

LOCATE FOR maestro.código = VAL(THISFORM.text1.Vale)

IF FOUND()

THISFORM.Refresh

ELSE

MESSAGEBOX('Registro no encontrado')

ENDIF

Ves! Prueba y me avisas! :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas