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

Se puede optimizar el UPDATE?

Estas en el tema de Se puede optimizar el UPDATE? en el foro de Mysql en Foros del Web. Buenas, Tengo un script que leer un fichero XML grandecito más de 1.000 registros (aunque este xml puede aumentar a más de 20.000 registros sin ...
  #1 (permalink)  
Antiguo 30/12/2009, 01:08
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Se puede optimizar el UPDATE?

Buenas,

Tengo un script que leer un fichero XML grandecito más de 1.000 registros (aunque este xml puede aumentar a más de 20.000 registros sin problemas, pero estoy viendo que leyendo 1.000 registros ya va lento... ) e introducir los datos en una bbdd mysql para su posterior información.

Después de poner contadores de tiempo en el script, he conseguido hallar la operación que hace que se demore tanto! el UPDATE!!

Hay 2 escenarios:

Si los datos del fichero xml no estan en la base de datos:
  • Carga el fichero XML en un array que es procesado posteriormente de 2 a 3 seg.
  • Compara cada linea del fichero xml si está introducida en la bbdd (y como en este escenario no están, los introduce INSERTs) entre 3 y 4 seg.

Si los datos del fichero XML ya están en la base de datos pero han cambiado el xml:
  • Carga el fichero XML en un array que es procesado posteriormente de 2 a 3 seg.
  • Compara cada linea del fichero xml si está introducida en la bbdd. En este caso ya están en la base de datos, por lo que tengo que hacer un UPDATE por cada registro del XML con la BBDD. Este es el punto conflictivo, los UPDATES, al parecer no tarda lo mismo un INSERT que un UPDATE, tardando este último 10 veces más! mas de 10 seg. tarda en hacer los 1.000 updates.

Me pregunto si esto es normal y si se puede optimizar de alguna manera, que no tarde tanto actualizar todos los registros de la bbdd que coinciden con los registros del XML que estoy leyendo...

La consulta del update:
Código SQL:
Ver original
  1. $sql_actualiza="UPDATE xml_tabla SET precio='$precio' where idproducto='$IDproducto'";  $actualizada=@mysql_db_query($sql_db,$sql_actualiza_cuota,$db_conexion) OR die(mysql_error())
;

Muchas gracias de antemano!
  #2 (permalink)  
Antiguo 30/12/2009, 11:46
Avatar de neodani  
Fecha de Ingreso: marzo-2007
Mensajes: 1.811
Antigüedad: 17 años, 2 meses
Puntos: 20
Respuesta: Se puede optimizar el UPDATE?

Encontré el fallo.

Hacía un update de todas las cuotas hubiesen cambiado o no. Lo rectifiqué haciendo solo el update si la cuota había cambiado. He reducido los tiempos más de 10 seg.

Ahora tarda en procesar un fichero xml que lee de internet y compara 1075 registros en la base de datos entre 4 y 6 seg.

Gracias ;)
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 17:14.