Como puedo hacer más rápida la búsqueda en un formulario con tabla que contiene 6.5 millones de datos

Tengo una tabla que contiene 6.650.000 datos numero de que son: cédula, nombre, apellido, coligió-id recinto-id

La base de datos pesa 1gb cuando inicio una búsqueda la misma frisa a ms access.

1 respuesta

Respuesta
1

Parto de la premisa de que no tengo ninguna tabla de semejante número de registros, pero, la verdad, me extraña mucho que te ocupe 1 gyga.

- 1 Mb equivale, aproximadamente, en texto, a 1 libro medio de 400 páginas. Que ya cabe bastante información. Por tanto, ¿la información que tienes va a ocupar 1000 libros? Me extrañaría mucho.

- Si sólo son números o texto, nada de imágenes, no creo que te pueda ocupar eso

- No sé que significa "la misma frisa a ms access."

- ¿Has probado a compactar y reparar la base?

- Por otro lado no dices como hace la búsqueda, Si es del tipo

Dlookup...

Dcount...

me.recordsource="select.....

for i=1 to.....

Tendrías que concretar algo más.

hola como estas

gracias por la repuestas, tratare de explicar de una mejor manera 

si en efecto es un documento de un aproximadamente mas de 1gb , y los datos estan compartido en una tabla con 5 campos, la cantidad de registros son unos 6.5 millones (6.500.000)

hay un campo llamado CEDULA que contiene códigos de 11 dijimos y este es el que utilizo para buscar los registros atrevas de una caja de texto 

el asunto es que cuando intento buscar un registro desde un formulario ms access se queda buscando el dato y pasan mucho tiempo tratando de encontrar el dato y el programa no responde

si intento buscar los datos en una tabla re contiene un millón de registro, esta dura unos 10 seguidos o menos  para encontrarlos,

desde un programa echo en foxpro con un archivo .bdf con los mismos 6.5 millones de registros, la información el programa la encuentra en décimas de segundos. 

hay alguna forma para que me funcione con la rapidez de el programa de foxpro?

¿Has probado a usar algo como, suponiendo que el cuadro de texto donde escribes algo se llame Buscar y que Cédula se texto

Me.recordsource="select * from clientes where cedula like " & me.buscar & "'"

En este caso, el origen de registros del formulario serán aquellos de la tabla Clientes en que el campo Cedula sea igual al que acabas de escribir.

Como te decía, no tengo ninguna base con tantos registros, pero me extraña que se bloquee, o que tarde tanto. En la empresa en la que trabajaba, llevábamos los datos de compras, ventas, clientes, proveedores, bancos, etc de 47.000 empresas y no nos daba problema ninguno. Es más, sólo ocupaba 100 megas.

Sólo se me ocurre que uses algo como

dim i as integer

for i=1 to...

Porque en este caso tendrías que ponerlo como

Din i as long

Hola como estas

Luego de estar probando no he logrado privar lo que me dices ya que no tengo el nivel de programación muy alto

Si me puedes ilustra con un ejemplo se lo agradezco

Si tengo una tabla Clientes, que sólo tiene 91 registros

Y tengo la tabla Otros, que está vacía

En un formulario tengo un botón de comando y un cuadro de texto que va a actuar de cronómetro en segundos para que veas lo que tarda. Cuando pulso el botón

Y me ha dejado la tabla Otros 

Es decir, en 8 segundos ha copiado 2000 veces la tabla Clientes en la tabla Otros y no da ningún problema.

Y simplemente le he dicho en el código del botón, en el evento Al hacer clic

Private Sub Comando15_Click()
Dim i As Integer
For i = 1 To 2000
DoCmd.RunSQL "insert into otros select nombrecliente,nombrecontacto,cargocontacto,ciudad,pais from clientes"
Next i
End Sub

Ahora vamos a suponer que tengo un formulario con subformulario. En el formulario tengo un combinado donde voy a elegir un país.

Cuando elijo Austria( tarda menos tiempo pero como le tengo puesto que cuente segundos)

Tarda exactamente 4 décimas de segundo.

Por eso me extraña que no te funcione.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas