La Web del Programador: Comunidad de Programadores
 
    Pregunta:  30358 - INDICES EN FOXPRO
Autor:  Jose Roberto Arias
Tengo un sistemita que utiliza unas tablas libres en Visual Foxpro 6.0 el problema es que antes el sistema lo podia copiar a un disquette y ahora que lo han utilizado ocupa casi 200 Mb. yo entiendo que es normal ya que unas de las bases de datos tienes como medio millon de registros, el problema es que los eliminè todos y el archivo de indice todavia me queda casi del mismo tamaño que tenia la Base de datos, aahh y otra cosa el proceso de busqueda que tengo se me hace muy lento...(cuando estan todos los registros claro) yo utilizo el Locate" para localizar un registro o un "append from" o "Set filter to" para un grupo de registros... que tengo que hacer para solucionar estos dos problemas?.

  Respuesta:  Victor Paredes
Como primer medida, abri las tablas con las que tenes el problema y reindexalas a todas (reindex).
Como segunda medida, vos estas utilizando LOCATE para buscar un valor, el mismo hace la busqueda de manera secuencial, lo que tenes que hacer es empezar a usar esos indices que tenes. Para esto usa la funcion SEEK

Ej
set order to Apellido
seek ("Paredes")
if found()=.t.
messagebox("Encontre !!!")
else
messagebox("Lo siento no lo encontre.")
endif

De esta forma, vas a optimizar los tiempos de busqueda en las tablas que tengas (especialmente las grandes.)

  Respuesta:  Foxito
Hola:
Posiblemente ejecutastes el comando DELETE para borrar los registros. Pues este comando los anula pero no los borra. Debes ejecutar un pack para eliminar los DELETEADOS.

Luego ejecuta REINDEX para actualizar los indices CDX o si tienes IDX nuevamente reindexalos abriendo la tabla con todos sus indices y REINDEX.