sql >> Base de Datos >  >> RDS >> Sqlserver

Insertar Actualizar proceso almacenado en SQL Server

Su suposición es correcta, esta es la forma óptima de hacerlo y se llama upsert/merge.

Importancia de UPSERT - de sqlservercentral.com:

Para cada actualización en el caso mencionado anteriormente, estamos eliminando una lectura adicional de la tabla si usamos UPSERT en lugar de EXISTS. Desafortunadamente para una inserción, los métodos UPSERT y IF EXISTS usan la misma cantidad de lecturas en la tabla. Por lo tanto, la verificación de existencia solo debe hacerse cuando hay una razón muy válida para justificar la E/S adicional. La forma optimizada de hacer las cosas es asegurarse de tener la menor cantidad posible de lecturas en la base de datos.

La mejor estrategia es intentar la actualización. Si ninguna fila se ve afectada por la actualización, inserte. En la mayoría de las circunstancias, la fila ya existirá y solo se requerirá una E/S.

Editar :Consulte esta respuesta y la publicación de blog vinculada para conocer los problemas con este patrón y cómo hacer que funcione de manera segura.