Creacion de Indice para optimizar tabla para busqueda por apellidos y nombres

22/02/2008 - 22:58 por mabarcau | Informe spam
Mis estimados, tengo una tabla de clientes que por ahora cuenta con
alrededor de 100 mil registros, y el tamaño se incrementara
rapidamente, tengo un campo codigo cliente nvarchar(13), pero por lo
general las busquedas que se realizan son por apellidos y nombres,
como saben los usuarios mayormente escriben fracciones de dichos
campos, a veces la primera letra tan solo, el primer apellido, lo caul
hace que el tiempo de consulta sea extremadamente extenso, mi pregunta
es, que recomendarian que haga para optimizar las consultas que de por
si van a tomar su tiempo.

Les adjunto la estructura de mi tabla de clientes.


CodCliente varchar 13
TipoPersona int 4
ApellidoPaterno varchar 30
ApellidoMaterno varchar 30
ApellidoCasada varchar 30
Nombre varchar 30
Sexo char 1
EstadoCivil varchar 2
NroHijos int 4
Residente bit 1
RazonSocial varchar 100
Siglas varchar 30
TipoEmpresa varchar 2
PaginaWeb varchar 75
FechaNacimiento varchar 8
CodPais varchar 3
TelefonoDomicilio varchar 30
TelefonoCelular varchar 30
TelefonoTrabajo varchar 30
TelefonoReferencia varchar 30
Fax varchar 15
EmailPersonal varchar 40
EmailTrabajo varchar 40
CodCIIU varchar 5
CodSBS varchar 10
CalificacionSBS int 4
CondicionLaboral int 4
EmpresaGiroLaboral varchar 25
Observacion nvarchar 500
Estado int 4
FechaRegistro varchar 25
FechaActualizacion varchar 25

Cualquier sugerencia que venga de parte de ustedes, sera por demas
agradecida de mi parte, aca les envio un ejemplo de busqueda.

caso ideal:
exec PERSONA_Get_Nombre @vchApellidoPaterno = 'ramos',
@vchApellidoMaterno = 'sajami', @vchApellidoCasada = '', @vchNombre 'marlon', @intIndEstado = 0

caso real:
exec PERSONA_Get_Nombre @vchApellidoPaterno = 'r', @vchApellidoMaterno
= 's', @vchApellidoCasada = '', @vchNombre = '', @intIndEstado = 0


Como veran, solo consultan con las iniciales.
Pendiente de ustedes, me despido.

Saludos Cordiales,

Miguel
 

Leer las respuestas

#1 Luis Mata
22/02/2008 - 23:04 | Informe spam
Mira yo predije que iba a pasar eso en mi sistema así que procedí a trabajar
con temporales, creo temporales en cada PC cliente, las tablas de mayor uso:
digamos clientes, artículos, proveedores y otros.
luego la búsqueda la hago en una tabla local osea en los temporales, cuando
la encuentre en código envía al servidor dicho código y extrae los datos
restantes y las muestra al usuario.
y adicionalmente en mi pantalla principal creo un procedimiento que compare
los datos de cada tabla temporal con la de la base de datos original y las
vaya actualizando.
pues así evite que mi sistema se vuelva un poco chancha.
En mi caso uso VFP 9 con DBF como temporales con SQL 2005

Luis Mata
Perú

"mabarcau" escribió en el mensaje
news:
Mis estimados, tengo una tabla de clientes que por ahora cuenta con
alrededor de 100 mil registros, y el tamaño se incrementara
rapidamente, tengo un campo codigo cliente nvarchar(13), pero por lo
general las busquedas que se realizan son por apellidos y nombres,
como saben los usuarios mayormente escriben fracciones de dichos
campos, a veces la primera letra tan solo, el primer apellido, lo caul
hace que el tiempo de consulta sea extremadamente extenso, mi pregunta
es, que recomendarian que haga para optimizar las consultas que de por
si van a tomar su tiempo.

Les adjunto la estructura de mi tabla de clientes.


CodCliente varchar 13
TipoPersona int 4
ApellidoPaterno varchar 30
ApellidoMaterno varchar 30
ApellidoCasada varchar 30
Nombre varchar 30
Sexo char 1
EstadoCivil varchar 2
NroHijos int 4
Residente bit 1
RazonSocial varchar 100
Siglas varchar 30
TipoEmpresa varchar 2
PaginaWeb varchar 75
FechaNacimiento varchar 8
CodPais varchar 3
TelefonoDomicilio varchar 30
TelefonoCelular varchar 30
TelefonoTrabajo varchar 30
TelefonoReferencia varchar 30
Fax varchar 15
EmailPersonal varchar 40
EmailTrabajo varchar 40
CodCIIU varchar 5
CodSBS varchar 10
CalificacionSBS int 4
CondicionLaboral int 4
EmpresaGiroLaboral varchar 25
Observacion nvarchar 500
Estado int 4
FechaRegistro varchar 25
FechaActualizacion varchar 25

Cualquier sugerencia que venga de parte de ustedes, sera por demas
agradecida de mi parte, aca les envio un ejemplo de busqueda.

caso ideal:
exec PERSONA_Get_Nombre @vchApellidoPaterno = 'ramos',
@vchApellidoMaterno = 'sajami', @vchApellidoCasada = '', @vchNombre 'marlon', @intIndEstado = 0

caso real:
exec PERSONA_Get_Nombre @vchApellidoPaterno = 'r', @vchApellidoMaterno
= 's', @vchApellidoCasada = '', @vchNombre = '', @intIndEstado = 0


Como veran, solo consultan con las iniciales.
Pendiente de ustedes, me despido.

Saludos Cordiales,

Miguel

Preguntas similares