La Web del Programador: Comunidad de Programadores
 
    Pregunta:  655 - COMO AGILIZAR LOS DATOS EN FOX 2.6, FOX PARA WINDOWS
Autor:  Wilfredo Castillo
Tengo que realizar una aplicacion en foxpro para windows o foxpro 2.6, esta aplicacion manejara unas dbf de algunos 4,000 articulos....
Yo he hecho aplicaciones pero no una que maneje tantos datos he leido que utilizando la memoria se vuelven mas rapidas las pc´s el problema es que no se como utilizarla..
Tambien me gustaria que me recomendaran cualquiera de los dos foxpro (2.6(dos) para windows)cual de los dos es mas veloz...
Gracias

  Respuesta:  Francisco Mc Manus
: La forma correcta de acelerar los datos en Foxpro (Cualquier versión) es mediante la utilización de RushMore.

Rushmore permite acceder a millones de registros en muy poco tiempo, yo lo he comprobado, tengo una DBF con 2.400.000 registros y mediante LOCATE o SELECT SQL puedo obtener la información necesaria en menos de un segundo. (Me olvidé del SEEK)

¿Cómo se hace?

Para usar Rushmore debes utilizar la expresión exacta del índice para todas tus búsquedas.

Es decir, si tiene un índice Codigo+DTOS(Fecha) y debes buscar todas las que el código sea igual a 1 debes usar la sentencia SELECT .... WHERE Codigo+DTOS(Fecha) = "1".
Para que esto funcione el SET EXACT DEBE ESTAR EN OFF, SET OPTIMIZE EN ON, No debes tener ningún índice activo, vale decir SET ORDER TO.

Foxpro, siempre compara la expresión de busqueda del lado izquierdo con las expresiones de llaves del DBF (IDX O CDX)(Siempre y cuando el SET OPTIMIZE Esté en ON), si coincide usa su algoritmo interno de Rushmore, para la búsqueda, si no, usa la búsqueda normal (Lenta)

Puedes encontrar más información en el manual, aunque a mi me costó mucho entenderlo, Cualquier otra consulta puedes hacérmela llegar a mi correo.

Saludos


  Respuesta:  Juan Montiel Garcia
Respecto a tu duda. Puedo decirte que con los 4000 registros con los que piensas trabajar la respuesta que te dara FOXPRO es muy rapida con solo utilizar la opcion RUSHMORE (SET OPTIMIZE ON) si utilizas instrucciones como LOCATE, COUNT, SUM, COPY TO, ETC.

Cuando hagas consultas o reportes hacia Tablas que manejen gran cantidad de informacion puedes utilizar comandos SQL´s, teniendo en cuenta que de acuerdo a tu criterio de busqueda las consultas tendran un tiempo de respuesta mayor.

Ten en cuenta que los comandos SQL´s.., LOCATE, COUNT, etc., te proporcionaran una respuesta dependiendo del Tamaño de la informacion y de tus condiciones de consulta o busqueda.

En Resumen, si vas a trabajar con consultas sobre tablas arriba de 20,000 registros te recomiendo generar indices y utlizar programacion para disminuir el tiempo de respuesta.