Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Varios UPDATE vs 1 UPDATE

Estas en el tema de Varios UPDATE vs 1 UPDATE en el foro de Mysql en Foros del Web. Hola, me gustaría saber que es mejor (varios UPDATE): bucle UPDATE tabla SET campo='1' WHERE id_campo='id'; fin bucle o (Un UPDATE): UPDATE tabla SET campo='1' ...
  #1 (permalink)  
Antiguo 28/04/2011, 02:13
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Varios UPDATE vs 1 UPDATE

Hola,

me gustaría saber que es mejor (varios UPDATE):


bucle
UPDATE tabla SET campo='1' WHERE id_campo='id';
fin bucle


o (Un UPDATE):


UPDATE tabla SET campo='1' WHERE id_campo='id1' AND id_campo='id2' AND id_campo='id3';



Un saludo
  #2 (permalink)  
Antiguo 28/04/2011, 05:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Varios UPDATE vs 1 UPDATE

Código MySQL:
Ver original
  1. UPDATE tabla SET campo='1' WHERE id_campo='id1' AND id_campo='id2' AND id_campo='id3';
Esta consulta es imposible. Un campo no puede tener al mismo tiempo tres valores distintos. Ten en cuenta que la condición del WHERE se aplica a cada registro que se selecciona.
Para que resulte, deberías usar OR en lugar de AND, o bien hacerlo así:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET campo='1'
  3. WHERE id_campo IN ('id1', id2', id3');
COnsejo: Si el campo de la tabla no es VARCHAR o CHAR, no pongas el valor entre apóstrofes, porque obligas a MySQL a realizar conversiones implícitas innecesarias, y cuando trabajes con tablas muy grandes terminarás comprometiendo la performance.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 28/04/2011, 05:31
 
Fecha de Ingreso: septiembre-2005
Mensajes: 522
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Varios UPDATE vs 1 UPDATE

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Código MySQL:
Ver original
  1. UPDATE tabla SET campo='1' WHERE id_campo='id1' AND id_campo='id2' AND id_campo='id3';
Esta consulta es imposible. Un campo no puede tener al mismo tiempo tres valores distintos. Ten en cuenta que la condición del WHERE se aplica a cada registro que se selecciona.
Para que resulte, deberías usar OR en lugar de AND, o bien hacerlo así:
Código MySQL:
Ver original
  1. UPDATE tabla
  2. SET campo='1'
  3. WHERE id_campo IN ('id1', id2', id3');
COnsejo: Si el campo de la tabla no es VARCHAR o CHAR, no pongas el valor entre apóstrofes, porque obligas a MySQL a realizar conversiones implícitas innecesarias, y cuando trabajes con tablas muy grandes terminarás comprometiendo la performance.

Hola, sí la pregunta era referente a "OR" y no "AND" una pequeña/gran confusión.

Entonces es mejor utilizar un solo UPDATE con varios Ids en al condición que utilizar varios UPDATES con un solo id?
  #4 (permalink)  
Antiguo 28/04/2011, 05:51
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Varios UPDATE vs 1 UPDATE

Si el campo y el valor a actualizar en todos los casos son los mismos, si. Es siempre mucho mejor, porque no necesitas crear un proceso por cada actualización (una consulta genera un proceso en el DBMS), sino que MySQL resuelve todo en el mismo.
Los DBMS y el SQL son poderosos. Fueron diseñados para hacer estas cosas y muchas más muy complejas, tienes que aprender a aprovechar las capacidades y olvidarte de muchas de las cosas que aprendiste en programación. No te olvides que SQL no es un lenguaje de programación, es un lenguaje de consultas, por lo que no es necesario en muchos casos hacer las cosas "de a una", como se acostumbra en los lenguajes de programación. El DBMS resuelve mucho por sí mismo porque tiene programados recursos lógicos para hacerlo. En eso estriba su poder.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:12.