Alternativa para consulta existe

Tengo la siguiente consulta:

update tab1.abc,
tab1.sbd = (select tab2.abc, tab2.sbd from tab2,tab1 where --some conditions)
where exists(select tab2.abc, tab2.sbd from tab2,tab1 where --some conditions)

Ahora mi tarea es optimizar esta consulta.

Creo que eliminar la cláusula exist o combinar ambas cláusulas where ayudaría mucho. Pero como hacerlo ?

PS : existe la cláusula porque quiero que el número de filas actualizadas sea cero si la cláusula de selección devuelve cero filas.

preguntado el 28 de agosto de 12 a las 10:08

Por favor incluya la consulta exacta. Al filtrar la --some conditions en realidad no podemos ver qué hace su consulta y cómo refactorizarla. -

2 Respuestas

JOIN las dos mesas en lugar de EXISTS. Algo parecido a lo siguiente:

UPDATE tab1
INNER JOIN tab2 ON --some join condition
SET sbd = --something
AND abc = --other something
WHERE --some conditions

Respondido 28 ago 12, 10:08

Gracias por la respuesta, pero busco los datos para la actualización de tres tablas y verifico algunos parámetros de cada una de estas tablas. ¿No sería muy costosa una combinación en este caso? - Rachit Agrawal

puedes usar la palabra clave IN

update tab1.abc,
tab1.sbd = (select tab2.abc, tab2.sbd from tab2,tab1 where --some  conditions)
where something in 
(select tab2.abc, tab2.sbd from tab2,tab1 where --some conditions)

consulte los enlaces a continuación:

EN (TSql)

SQL ENTRADA

Respondido 28 ago 12, 10:08

No creo que esto mejore el rendimiento, ya que estamos ejecutando la misma consulta dos veces. - Rachit Agrawal

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.