consulta bd de 10 millones de registros
compañeros buenas tardes tengo una pregunta como puedo accesar una base de datos de vfp que contiene 10 millones de registros de una manera super rapida.
me explico yo tengo la base indexada como hago para que cuando digite la cedula en un listbox solo me muestre los registros que contienen esta cedula pero de una manera super super rapida.
mil gracias
Softcomercial
me explico yo tengo la base indexada como hago para que cuando digite la cedula en un listbox solo me muestre los registros que contienen esta cedula pero de una manera super super rapida.
mil gracias
Softcomercial
Utilza la instrucción SQL Select y se lo pasas como parametro en la propiedad Recordsource de un Grid para mostrar la información. Por ejemplo
cadena="SELECT * FROM tabla WHERE_
cedula="+valorcedula
grid.Recordsource=cadena
Este codigo lo metes en el evento valid del control donde tecleas la cedula
Esto normalmente es muy rapido, pero recuerda que las tablas de VFP no están pensadas para soportar un numero tan grande de registros, tal vez debas considerar migrar tu base de datos a un gestor de bd de mayor potencia como SQL Server u Oracle, con cualquiera de los dos VFP puede conectarse.
Un saludo
cadena="SELECT * FROM tabla WHERE_
cedula="+valorcedula
grid.Recordsource=cadena
Este codigo lo metes en el evento valid del control donde tecleas la cedula
Esto normalmente es muy rapido, pero recuerda que las tablas de VFP no están pensadas para soportar un numero tan grande de registros, tal vez debas considerar migrar tu base de datos a un gestor de bd de mayor potencia como SQL Server u Oracle, con cualquiera de los dos VFP puede conectarse.
Un saludo
un SELECT es muy lento tardaria al rededor de 3seg ó más enrastrear la información y 2 seg más para mostrarla. ya que SELECT utiliza una busqueda secuencial
lamanera más y rapida es utilizando un SEEK o un INDEXSEEK.
SEEK() : Busca en una tabla la primera aparición de un registro cuya expresión clave de índice coincida con una expresión general y después mueve el puntero de registro al registro coincidente.
INDEXSEEK() : Sin mover el puntero de los registros, busca en una tabla indexada la primera ocurrencia de un registro cuya clave de índice coincida con una expresión especificada.
UN EJEMPLO:
FUNCTION BuscarArticulo(cIdArticulobusca,lEncontro)
IF SEEK(cIdArticulobusca,"posarticulos","art_codi")
lEncontro = .T.
ELSE
lEncontro = .F.
ENDIF
RETURN lEncontro
ENDFUNC
lamanera más y rapida es utilizando un SEEK o un INDEXSEEK.
SEEK() : Busca en una tabla la primera aparición de un registro cuya expresión clave de índice coincida con una expresión general y después mueve el puntero de registro al registro coincidente.
INDEXSEEK() : Sin mover el puntero de los registros, busca en una tabla indexada la primera ocurrencia de un registro cuya clave de índice coincida con una expresión especificada.
UN EJEMPLO:
FUNCTION BuscarArticulo(cIdArticulobusca,lEncontro)
IF SEEK(cIdArticulobusca,"posarticulos","art_codi")
lEncontro = .T.
ELSE
lEncontro = .F.
ENDIF
RETURN lEncontro
ENDFUNC
