Alternativa para consulta existe
Frecuentes
Visto 9,796 veces
0
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.
2 Respuestas
2
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
0
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:
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 sql or haz tu propia pregunta.
Por favor incluya la consulta exacta. Al filtrar la
--some conditions
en realidad no podemos ver qué hace su consulta y cómo refactorizarla. - MatBailie