Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   busqueda de un nombre en una tabla (https://www.clubdelphi.com/foros/showthread.php?t=9817)

cmena 03-05-2004 16:58:45

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

roman 03-05-2004 17:02:04

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

__cadetill 03-05-2004 17:02:26

Yo lo haría por SQL

Código SQL [-]
select *
from clientes
where upper(nombre) like 'M%'

roman 03-05-2004 17:15:53

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

__cadetill 03-05-2004 17:29:18

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 :D :p

jachguate 04-05-2004 10:04:11

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 :parametro

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 :parametro

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.

;)


La franja horaria es GMT +2. Ahora son las 06:32:02.

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