Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
¿ Locate o TQuery ?

Hola:

Para la inmensa mayoria, seguro que esta es una pregunta tonta pero me gustaria saber vuestra opinion segun vuestras experiencias.

Tengo una tabla Paradox en red con mas de 500.000 registros ( y creciendo ), actualmente, para localizar un solo registro utilizo el LOCATE (ahora la localizacion se hace eterna).

Yo supongo que el locate recorre la tabla por completo registro por registro y comparando.

¿Me recomendais cambiar el locate por un query con su correspondiente sentencia sql?. Yo pienso que seria mas rapido pero esperare vuestras opiniones.

Espero vuestras opiniones.

Saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #2  
Antiguo 11-03-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Pues con ese número de registros yo crearía un índice y utilizaría:
Código Delphi [-]
MiTabla.FindKey([Edit1.Text]);

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 11-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
pero con esa busqueda accedes al primero que encuentre, tendrias que hacer el indice con todos los campos que quieras que coincidan, no?
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #4  
Antiguo 11-03-2007
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Como hablas de localizar un registro, entiendo que es clave única, sino lo dicho no tendría sentido pues como comentas solamente localizarías el primero.

Si buscas una coincidencia en la que pueden verse involucrados varios registros y además quieres visualizar los que coinciden en una rejilla, solamente puedes utilizar una Consulta o un filtro.

Si quieres contar cuantos registros coinciden con un criterio entonces mejor utiliza una consulta.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #5  
Antiguo 11-03-2007
llonigualker llonigualker is offline
Miembro
 
Registrado: jul 2003
Posts: 67
Poder: 21
llonigualker Va por buen camino
se trata de lo siguiente:

imaginate una tabla de ciudadanos, con nombre, apellido, direccion, telefono, etc, con 500.000 registros.

Segun he entendido al definir el indice, tendria que añadir los campos nombre, apellido, direccion, etc....

y en el findkey supongo que seria tabla.findkey([variable1, variable2, ...., variablex])

Esta busqueda solo se hace para comprobar un determinado valor de un campo booleano (que tambien lo incluiria en el indice y en el findkey), no es para mostrar nada, si cumple esa condicion se hace una cosa y si no la cumple se hace otra.

Este metodo del findkey es mas rapido que el locate (ahora mismo esa tabla esta sin indexar)?

saludos.
__________________
El que pregunta es tonto durante 5 minutos, el que no pregunta es tonto para toda su vida.
Responder Con Cita
  #6  
Antiguo 11-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
En el caso del BDE, y de algunos otros motores, locate y findkey son igual de rápidos.

Sacado de la ayuda de delphi:
Cita:
Locate uses the fastest possible method to locate matching records. If the search fields in KeyFields are indexed and the index is compatible with the specified search options, Locate uses the index. Otherwise Locate creates a filter for the search.
Vamos, que si existe un índice para los campos de la búsqueda, locate lo usará.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Yo uso LOCATE y tu......... JULIOCTORRESG Varios 1 02-03-2007 01:10:47
Locate sanrp2004 Varios 3 21-06-2006 20:30:37
Sincronizar DBLookupComboBox con Tquery al hacer locate en la tabla ronalg Conexión con bases de datos 1 27-05-2006 15:58:06
Locate en TQuery andresenlared Conexión con bases de datos 1 31-12-2003 16:39:21
Locate hgiacobone Conexión con bases de datos 6 08-07-2003 15:33:49


La franja horaria es GMT +2. Ahora son las 03:28:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi