..


Enlaces patrocinados

Menos de consultas con INSERT ... ON DUPLICATE KEY UPDATE

Artículo escrito por Max Bossi

Y "bien conocido que una correcta gestión de la consulta es un requisito previo para la ejecución estable y eficiente.
En este artículo vamos a presentar una sintaxis poco conocido pero de gran alcance muy, estoy hablando de la cláusula ON KEY UPDATE DUPLICADO.

Esta cláusula se utiliza en una instrucción INSERT y su finalidad es comprobar, antes de la inserción, hay una duplicación de una clave principal (clave principal) o una clave única (clave única), y si esto ocurre, el motor un'UPDATE MySQL lugar se inserta.

La ventaja de esta cláusula es claro: escribir una consulta en lugar de dos, con ventajas en términos de rendimiento y limpieza del código.

Tomemos un ejemplo. Supongamos que queremos hacer un simple script que realiza el registro de visitantes a nuestro sitio. Por debajo de la estructura de la tabla de nuestra base de datos:

  • IP (clave)
  • numero_visite
  • ultima_visita
Queriendo grabar cada IP en tránsito en nuestras páginas que tenemos, de acuerdo con la lógica habitual, hacer un SELECT de primer cheque preliminar de que la IP no está en la base de datos y sólo si la respuesta es negativa (no IP actual) para consultar INSERT.

Gracias a la Sintaxis de INSERT ... ON DUPLICATE KEY UPDATE ... podemos conseguir el mismo resultado con una sola consulta:

 



 INSERT INTO VALORES ip_visitatori ('123 .123.123.123 ', 1, NOW ())

 





 EN CLAVE DPLICATE







 ACTUALIZACIÓN numero_visite numero_visite = + 1, ultima_visita = NOW ();

 
Por lo tanto, si la IP es la inclusión se hace, de lo contrario se ejecuta una simple actualización de los registros afectados. Utilizando esta sintaxis permite obtener un beneficio en términos de rendimiento equivalente al 30%.

Con un poco de imaginación y el ingenio de la cláusula en cuestión no puede ser muy útil en diversas circunstancias.
Por ejemplo, podemos utilizar en combinación con una condición. He aquí un ejemplo: Supongamos que tenemos una tabla de un sitio de subastas en línea hipotética estructura como sigue:

  • ID_asta
  • migliore_offerta
Suponga que usted desea continuar con la colocación de una nueva oferta, si la subasta ya ha ofrecido no será una simple actualización, pero sólo si la oferta es mayor que el que ya existe:
 



 Ofrece INSERT INTO VALUES (1, 120)

 





 EN CLAVE DPLICATE







 ACTUALIZACIÓN migliore_offerta = SI (VALUES (migliore_offerta) <120, 120, VALUES (migliore_offerta))

 
A través de una consulta simple que resuelve de una sola vez ... De lo contrario habría tenido que usar varias consultas con el consiguiente derroche de recursos (y un mayor riesgo de errores).

En la misma categoría ...
E-Learning
MS Access (Avanzado) MS Access (Avanzado)
Aprenda a crear y gestionar bases de datos rápida y fácilmente. A partir de 29 €.
MySQL (Curso) MySQL (Curso)
Gestión de base de datos de código abierto. A partir de 39 €.
SQL y bases de datos (Avanzado) SQL y bases de datos (Curso)
Crear y gestionar bases de datos relacionales. A partir de 39 €.
Enlaces patrocinados