elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Muchas sentencias UPDATE. ¿Cómo optimizarlo?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Muchas sentencias UPDATE. ¿Cómo optimizarlo?  (Leído 3,082 veces)
OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Muchas sentencias UPDATE. ¿Cómo optimizarlo?
« en: 27 Mayo 2011, 17:05 pm »

Hola uso php y mysql.
Tengo la necesidad de ejecutar muchas líneas sql del tipo UPDATE .....

He visto que la instrucciones INSERT se pueden concatenar para agilizar la actualización en mi Base de datos.  INSERT INTO Store_Information (store_name, Sales, Date)
VALUES ('Los Angeles', 900, '10-Jan-1999')


¿existe alguna forma de agilizar las actualizaciones UPDATE?
Son muchas líneas que ejecuta el script una a una para hacer la actualización en la Base de datos y claro.... se satura y tarda demasiado.
En concreto para que os hagáis una idea son aprox 10.000 líneas de sentencias UPDATE.

Algún consejo??
Muchas gracias.


En línea

OssoH


Desconectado Desconectado

Mensajes: 911


Ver Perfil
Re: Muchas sentencias UPDATE. ¿Cómo optimizarlo?
« Respuesta #1 en: 27 Mayo 2011, 17:15 pm »

He encontrado lo siguiente :
Código:
Las sentencias UPDATE son optimizadas de manera similar a las sentencias SELECT con la sobrecarga adicional de la escritura. Por ejemplo, para efectos de optimización, el siguiente código:

UPDATE nombreCampo FROM nombreTabla WHERE algunaCondicion

Es el mismo que este:

SELECT nombreCampo FROM nombreTabla WHERE algunaCondicion

Es decir, podemos optimizar una sentencia UPDATE de la misma forma que su equivalente sentencia SELECT.

La velocidad de escritura depende de la cantidad de datos que están siendo actualizados y el número de índices que son actualizados, por lo tanto debemos tener cuidado de crear índices que no sean verdaderamente útiles, o bien, hacer que los campos de la tabla sean más grandes de lo que realmente necesitamos.

También, otra forma de obtener actualizaciones rápidas es retrasar los UPDATEs y entonces hacer muchas actualizaciones en una fila posteriormente. Hacer muchas actualizaciones en una fila es mucho más rápido que hacer uno a la vez si se bloquea la tablas.

Debemos notar que para una tabla MyISAM que usa el formato de registro dinámico, el actualizar el registro a una longitud total más grande puede dividir el registro. Si esto llega a ocurrir, es muy importante usar el comando OPTIMIZE TABLE ocasionalmente.

El tema de retrasar los UPDATES suena interesante, podría almacenarlos en una variable string todas las sentencias SQL para luego ejecutarlas de golpe pero claro...... ¿tengo alguna limitación de tamaño?  Podria encadenar por ejemplo 200 sentencias sQL separadas por punto y coma y lanzarlas de golpe y asi sucesivamente con el resto. Mi pregunta es ¿hasta cuantas sentencias sQL puedo encadenar en una variable para luego ejecutarla?

Tambien tenia pensado en bloquear la tabla que deseo actualizar para agilizar las actualizaciones.
 LOCK TABLES nombretable WRITE;
 ..... ejecutar updates....
 UNLOCK TABLES;


Gracias.


« Última modificación: 27 Mayo 2011, 17:23 pm por OssoH » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problemilla con vb y las sentencias...
Programación Visual Basic
Hans el Topo 3 2,505 Último mensaje 22 Junio 2006, 17:06 pm
por Hans el Topo
4 sentencias en C que no se como funcionan(solucionado)
Programación C/C++
The Last Hero 5 3,600 Último mensaje 26 Mayo 2011, 20:22 pm
por The Last Hero
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines