Sigo con los triggers y los joins (delete)

11/09/2005 - 03:17 por Raul | Informe spam
Hola amigos. De nuevo yo con mis triggers y joins:

Mis preguntas son en procura de optimizar al maximo mis triggers pues ya he
leido que ralentizan las operaciones de escritura, lo cual no quisiera para
nada me ocurriera.

En este caso me interesa un trigger que borre un registro en otra tabla:
Ej. dentro del trigger en TABLA2:

DELETE TABLA1
FROM TABLA2 INNER JOIN DELETED D ON TABLA2.PK=D.PK and D.Flag<>''

Mi cuestion es si es mejor hacerlo asi, mas seguro o eficiente , con where ?
o son formas equivalentes ?

DELETE TABLA1
FROM TABLA2 INNER JOIN DELETED D ON TABLA2.PK=D.PK where D.Flag<>''

o en su defecto hacerlo asi:

DELETE TABLA1
FROM TABLA2 INNER JOIN (select PK from DELETED WHERE DELETED.Flag<>'') D ON
TABLA2.PK=D.PK

Cual de los metodos se espera que sean mas rapidos ?
 

Leer las respuestas

#1 Maxi
11/09/2005 - 15:56 | Informe spam
Raul, cuando quieres ver diferencias entre metodos lo mejor es ver el plan
de ejecucion de cada uno y sacar las conclusiones.

En este caso no creo que entres estos 3 metodos exista mucha diferencia
(quizas hasta ninguna).

Ahora es cierto q los trigger hacen las cosas mas lentas y aumentan los
bloqueos, hay q tratar de evitarlos si se puede y poner la logica esta
dentro de tus Sp's correspondientes


Maxi - Buenos Aires - Argentina
Desarrollador 3 Estrellas

Msn_messager:
mail: Maxi.da[arroba]gmail.com

"Raul" escribió en el mensaje
news:
Hola amigos. De nuevo yo con mis triggers y joins:

Mis preguntas son en procura de optimizar al maximo mis triggers pues ya
he leido que ralentizan las operaciones de escritura, lo cual no quisiera
para nada me ocurriera.

En este caso me interesa un trigger que borre un registro en otra tabla:
Ej. dentro del trigger en TABLA2:

DELETE TABLA1
FROM TABLA2 INNER JOIN DELETED D ON TABLA2.PK=D.PK and D.Flag<>''

Mi cuestion es si es mejor hacerlo asi, mas seguro o eficiente , con where
? o son formas equivalentes ?

DELETE TABLA1
FROM TABLA2 INNER JOIN DELETED D ON TABLA2.PK=D.PK where D.Flag<>''

o en su defecto hacerlo asi:

DELETE TABLA1
FROM TABLA2 INNER JOIN (select PK from DELETED WHERE DELETED.Flag<>'') D
ON TABLA2.PK=D.PK

Cual de los metodos se espera que sean mas rapidos ?






Preguntas similares