Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-11-2015
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Rendimiento de Lookup vs Locate

Tengo una aplicacion que hace uso intensivo de busquedas ya que para cada grupo de controles los asocia con un dataset realizando una serie de comprobaciónes según condiciones y existencia o no en cierta y determinada tabla que contiene dichas restricciones, por tal razón recorre constantemente esta (que si bien es pequeña en cuanto a numero de registros) me pregunto si utilizando lookup en vez de locate seria mas eficiente en cuanto al uso de los recursos .....

Saludos
Responder Con Cita
  #2  
Antiguo 21-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Sino tenés problemas de eficiencia yo no tocaría nada, como se dice por ahí, optimizar antes de tiempo es la raíz de todos los males

A lo sumo podes cargar de prueba un montón de registros y probar

Tampoco diste detalles sobre que tipo de componentes usas, ya que cada uno implementará de manera diferente los métodos, o incluso tiene métodos propios que son mejores. También importa el tipo de campo, los índices y si es un dataset conectado a un control data aware, etc
Responder Con Cita
  #3  
Antiguo 21-11-2015
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
En teoria no hay problemas de excesivo consumo de recursos

Sin embargo optimizar nunca esta de mas....

Gracias por tus sugerencias ...
Responder Con Cita
  #4  
Antiguo 21-11-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
En realidad si

Si no tenes problemas deberias dejar todo como esta.

Si siempre van a ser pocos registros no vas a tener problema con el locate.

Si son muchos registros la pregunta es, porque estas lanzando un locate sobre un Dataset con tantos registros? Lo mas logico es directamente traer un Dataset mas "filtrado" (tip: ejecutar SQL y traer el resultado sobre un TDataset es MUCHO mas rapido que traer todo y luego ejectar "el equivalente", ya sea locate, filter, order, etc)

Otro buen truco es, siempre que se va a realizar un proceso potencialmente largo sobre un Dataset, que esta enlazado a un control db, deshabilitar el enlace momentaneamente y volver a activarlo cuando termina el proceso

masomenos asi:

Código Delphi [-]
  Dataset.DisableControls; // DBGrids, DBEdits, etc, quedan "desconectados", al mover el Dataset o editar valores de campos no "refrescan"
  try
    while not Dataset.Eof do
    begin
      Foo(Dataset);
      Dataset.Next;
    end;
  finally
    Dataset.EnableControls;
  end;
Responder Con Cita
  #5  
Antiguo 21-11-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.037
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por Kenobi Ver Mensaje
lookup en vez de locate
Para hacer búsquedas, ni uno ni otro. Hay que usar query.
Responder Con Cita
  #6  
Antiguo 21-11-2015
Kenobi Kenobi is offline
Miembro
 
Registrado: mar 2007
Posts: 191
Poder: 18
Kenobi Va por buen camino
Es solo por optimizar

la verdad son muy pocos registros en los que debo aplicar el locate, no llegan a 100(proyectando a futuro) como aclare es por optimizar y la verdad no conocia el lookup y eventualmente choca el reposicionamiento a nivel de registros en una tabla, sobre todo cuando esta esta enlazada a un componnente visual como un grid ( claro ya se que se puede aplicar el disablecontrols) pero bueno como dije a veces veo el codigo y me apetece buscarle la vuelta para mejorarlo
Responder Con Cita
  #7  
Antiguo 22-11-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Kenobi.

El método Lookup internamente usa el método Locate (que no es ninguna maravilla). Así que hablando en términos de eficiencia, coincido con Casimiro; nada mejor que usar una consulta sql.

Aunque siendo sinceros, tratándose de esa cantidad de datos (100 filas), no vas a notar diferencia cualquiera sea el camino que elijas.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Ayuda con Locate y Lookup cubanbaker Conexión con bases de datos 21 08-09-2011 16:01:25
rendimiento de PHP Ñuño Martínez PHP 1 20-09-2006 06:29:55
Busqueda con Locate o Lookup noshy Conexión con bases de datos 7 15-05-2006 01:45:02
Locate en un campo lookup amadis Conexión con bases de datos 1 22-12-2005 21:46:52
rendimiento carlomagno Firebird e Interbase 14 06-07-2004 17:05:13


La franja horaria es GMT +2. Ahora son las 17:35:43.


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