Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-05-2004
cmena cmena is offline
Miembro
 
Registrado: abr 2004
Ubicación: CHILE
Posts: 67
Poder: 21
cmena Va por buen camino
Question busqueda de un nombre en una tabla

Hola deseo buscar un cliente en una base de datos grande, digitando solo la primera letra de su apellido y que aparezcan todos los que comienzan con esa letra , cual es la forma mas eficiente?

Atte Cmena
gracias
Responder Con Cita
  #2  
Antiguo 03-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Con una componente TTale podrías usar FindNearest. Con un consulta sql algo como

Código SQL [-]
select * from tabla
where nombre like "N%"

que regresará todos los que comiencen con N.

// Saludos
Responder Con Cita
  #3  
Antiguo 03-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Yo lo haría por SQL

Código SQL [-]
select *
from clientes
where upper(nombre) like 'M%'
Responder Con Cita
  #4  
Antiguo 03-05-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por cadetill
Yo lo haría por SQL
Yo lo haría dependiendo de la base de datos que use. Si usa Paradox será más rápido con TTable que con TQuery (mucho más rápido de hecho). En cualquiera de los dos casos supongo que convendrá ordenar por nombre.

// Saludos
Responder Con Cita
  #5  
Antiguo 03-05-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cita:
Empezado por roman
Yo lo haría dependiendo de la base de datos que use. Si usa Paradox será más rápido con TTable que con TQuery (mucho más rápido de hecho).
Bueno, sí, cierto, jooo, es que nunca me acuerdo de estás bases de datos!!! Estoy demasiado bien acostumbrado ya
Responder Con Cita
  #6  
Antiguo 04-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hablando de eficiencia... si usas Interbase/Firebird, y pasas la letra como parámetro de la forma:

Código SQL [-]
Select *
  from tabla
 where nombre like arametro

el motor no usará un indice definido sobre el nombre, sino recorerá todos los registros de la tabla. Esto es debido a que el plan se determina antes de conocer el valor del parámetro. Es mas eficiente una clausula starts with:
Código SQL [-]
Select *
  from tabla
 where nombre starts with arametro

donde el valor de parametro debiera ser solamente 'M' (sin porcentajes).

Aqui si que se usará el indice; claro, siempre que esté definido...

Aclaro que esto es válido para Interbase. No doy fe de otros motores, salvo de Oracle, que entiendo que utilizaría el indice si el parámetro es del tipo 'M%'.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
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


La franja horaria es GMT +2. Ahora son las 19:00:11.


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