como evito cursores? (q hacer para q sea mas rapido)

12/10/2004 - 23:33 por Julia | Informe spam
Hola a todos
Antes q nada muchas gracias por sus respuestas.

Por lo q he leído en este grupo ESTAN EN CONTRA DE LOS CURSORES , yo uso
muchos, y es verdad son exageradamente lentos, pero no se como substituirlos,
asi q agradeceré todas sus sugerencias

Tengo una tabla T_ALUMNOS (3,000,000 registros) donde se van guardando el
perfil de cada alumno: nombre, edad, id_entidad, id_municipio, id_localidad,
id_escuela, etc.

Por otra parte tengo tablas de catálogos:
T_MUNICIPIO => id_entidad, id_municipio, municipio
T_LOCALIDAD => , id_entidad, id_municipio, id_localidad, localidad
T_ESCUELA => , id_entidad, id_municipio, id_localidad, id_escuela, escuela

Mi cursor lo q hace es revisar que los campos q corresponden a la llave de
cada tabla de catálogos sea correcta.
Por ejemplo q la combinación de , id_entidad, id_municipio, id_localidad en
T_ALUMNOS se encuentre en T_LOCALIDAD
O q la combinación de id_entidad, id_municipio de T_ALUMNOS se encuentre en
T_MUNICIPIO
Si alguna de las combinaciones no son correctas actualizo el campo con un
valor q yo defino.

De esta forma tengo un cursor para cada tabla Catalogo

Muchas gracias por sus valiosas aportaciones

Saludos Julia

Preguntas similare

Leer las respuestas

#1 MAXI
13/10/2004 - 00:40 | Informe spam
Hola Julia!! con mucho gusto te voy a dar una mano :-)

Mira lo que estas exponiendo se puede solucionar de una forma muy simple,
usa claves externas (en SQL se llaman Foreign Keys), esto hace lo que buscas
y sin ningun esfuerzo :-)

Ahora bien, para hacer lo que haces como lo estas haciendo y sin cursor,
podrias usar:

UPDATE TABLA SET CAMPO=TUVALOR WHERE
CAMPO_ID NOT IN (SELECT ID FROM TABLAMAESTRO)

Pero como te comente antes, trata de implementar claves externas, porque
este tipo de cosas ya las administra tu motor :-)




Maxi

Buenos Aires - Argentina
Desarrollador .NET 3 Estrellas
Microsoft User Group (MUG)
Mail: Maxi_accotto[arroba]speedy.com.ar

Msn Messager:

"Julia" escribió en el mensaje
news:
Hola a todos
Antes q nada muchas gracias por sus respuestas.

Por lo q he leído en este grupo ESTAN EN CONTRA DE LOS CURSORES , yo uso
muchos, y es verdad son exageradamente lentos, pero no se como
substituirlos,
asi q agradeceré todas sus sugerencias

Tengo una tabla T_ALUMNOS (3,000,000 registros) donde se van guardando el
perfil de cada alumno: nombre, edad, id_entidad, id_municipio,
id_localidad,
id_escuela, etc.

Por otra parte tengo tablas de catálogos:
T_MUNICIPIO => id_entidad, id_municipio, municipio
T_LOCALIDAD => , id_entidad, id_municipio, id_localidad, localidad
T_ESCUELA => , id_entidad, id_municipio, id_localidad, id_escuela, escuela

Mi cursor lo q hace es revisar que los campos q corresponden a la llave de
cada tabla de catálogos sea correcta.
Por ejemplo q la combinación de , id_entidad, id_municipio, id_localidad
en
T_ALUMNOS se encuentre en T_LOCALIDAD
O q la combinación de id_entidad, id_municipio de T_ALUMNOS se encuentre
en
T_MUNICIPIO
Si alguna de las combinaciones no son correctas actualizo el campo con un
valor q yo defino.

De esta forma tengo un cursor para cada tabla Catalogo

Muchas gracias por sus valiosas aportaciones

Saludos Julia

Respuesta Responder a este mensaje
#2 Miguel Egea
16/10/2004 - 18:24 | Informe spam
Julia como te ha dicho maxi si estableces integridad referencial no podrán
introducirse datos erróneos, lo que hará que no tengas nada que comprobar,
ahora bien, si no quieres hacerlo, para esa comprobación no es necesario
cursores (y a mi no me gusta el not in, :-))

Select * f rom t_alumnos a left join T_Localidad b on
a.idEntidad=b.identidad and a.idMunicipio=b.idmunicipio and
a.id_localidad=b.idLocalidad
where b.identidad is null


-
Miguel Egea Gómez
Microsoft SQL-Server MVP
Webmaster de PortalSql.Com
¿Te interesa participar en las reuniones
del grupo de Usuarios de SQL-Server y .NET
Se harán en levante de España, (Alicante o Murcia)?


"Julia" escribió en el mensaje
news:
Hola a todos
Antes q nada muchas gracias por sus respuestas.

Por lo q he leído en este grupo ESTAN EN CONTRA DE LOS CURSORES , yo uso
muchos, y es verdad son exageradamente lentos, pero no se como
substituirlos,
asi q agradeceré todas sus sugerencias

Tengo una tabla T_ALUMNOS (3,000,000 registros) donde se van guardando el
perfil de cada alumno: nombre, edad, id_entidad, id_municipio,
id_localidad,
id_escuela, etc.

Por otra parte tengo tablas de catálogos:
T_MUNICIPIO => id_entidad, id_municipio, municipio
T_LOCALIDAD => , id_entidad, id_municipio, id_localidad, localidad
T_ESCUELA => , id_entidad, id_municipio, id_localidad, id_escuela, escuela

Mi cursor lo q hace es revisar que los campos q corresponden a la llave de
cada tabla de catálogos sea correcta.
Por ejemplo q la combinación de , id_entidad, id_municipio, id_localidad
en
T_ALUMNOS se encuentre en T_LOCALIDAD
O q la combinación de id_entidad, id_municipio de T_ALUMNOS se encuentre
en
T_MUNICIPIO
Si alguna de las combinaciones no son correctas actualizo el campo con un
valor q yo defino.

De esta forma tengo un cursor para cada tabla Catalogo

Muchas gracias por sus valiosas aportaciones

Saludos Julia

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida