{"id":2703,"date":"2023-01-24T16:52:17","date_gmt":"2023-01-24T16:52:17","guid":{"rendered":"https:\/\/manualsqlserver.com\/?p=2703"},"modified":"2023-01-24T16:53:19","modified_gmt":"2023-01-24T16:53:19","slug":"comparando-merge-vs-sp","status":"publish","type":"post","link":"https:\/\/manualsqlserver.com\/?p=2703","title":{"rendered":"Comparando Merge vs. SP"},"content":{"rendered":"\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP__D.png\"><img loading=\"lazy\" decoding=\"async\" width=\"220\" height=\"260\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP__D.png\" alt=\"\" class=\"wp-image-2704\"\/><\/a><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Comparando Merge con Store Procedures individuales<\/h2>\n\n\n\n<p>La instrucci\u00f3n Merge realiza instrucciones de inserci\u00f3n de registros, actualizaci\u00f3n o eliminaci\u00f3n de registros en una tabla de destino en la misma base de datos o en otra base de datos seg\u00fan los resultados de combinar los registros con una tabla de origen, esta tabla origen puede ser una consulta Select.<\/p>\n\n\n\n<p>Merge puede ser usado de varias formas, en este art\u00edculo se har\u00e1 la comparaci\u00f3n de usar Merge que haga el trabajo de inserci\u00f3n y de modificaci\u00f3n en el mismo procedimiento con el uso de procedimientos individuales para cada operaci\u00f3n.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p class=\"has-large-font-size\"><strong>Para m\u00e1s informaci\u00f3n ver:<\/strong><\/p>\n\n\n\n<p><a href=\"https:\/\/manualsqlserver.com\/?p=368\" target=\"_blank\" rel=\"noreferrer noopener\">Merge en SQL Server<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=2321\" target=\"_blank\" rel=\"noreferrer noopener\">Usando Merge con Select<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=2330\" target=\"_blank\" rel=\"noreferrer noopener\">Merge en Graph Tables<\/a><br>OutPut en Merge<br><a href=\"https:\/\/manualsqlserver.com\/?p=314\" target=\"_blank\" rel=\"noreferrer noopener\">Procedimientos almacenados<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=1493\" target=\"_blank\" rel=\"noreferrer noopener\">Variables en SQL Server<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=294\" target=\"_blank\" rel=\"noreferrer noopener\">Insertar registros<\/a><br><a href=\"https:\/\/manualsqlserver.com\/?p=300\" target=\"_blank\" rel=\"noreferrer noopener\">Actualizaci\u00f3n de registros<\/a><\/p>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Ejercicios<\/strong><\/p>\n\n\n\n<p><strong>Usando la base de datos Northwind<\/strong><\/p>\n\n\n\n<p>use Northwind<br>go<\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Ejercicio 1<\/strong><\/p>\n\n\n\n<p>En este primer ejercicio se crea un procedimiento almacenado que evalua la existencia de un Cliente, si el cliente existe se van a actualizar sus datos y si no existe se va a insertar un nuevo cliente. En este procedimiento se usa la instrucci\u00f3n Merge con un Select.<\/p>\n\n\n\n<pre class=\"wp-block-code has-small-font-size\"><code>Create or alter procedure spClientesActualizaInsertaMerge\r\n\t(\t\r\n\t\t@Codigo nchar(5),\r\n\t\t@Nombre nvarchar(40),\r\n\t\t@Contacto nvarchar(30),\r\n\t\t@Cargo nvarchar(30),\r\n\t\t@Direccion nvarchar(60),\r\n\t\t@Ciudad nvarchar(15),\r\n\t\t@Region nvarchar(15),\r\n\t\t@CodigoPostal nvarchar(10),\r\n\t\t@Pais nvarchar(15),\r\n\t\t@Fono nvarchar(24),\r\n\t\t@Fax nvarchar(24)\r\n\t)\r\nAs\r\n\tMERGE dbo.Customers As ClientesDestino\r\n\t\t\tUSING\r\n\t\t\t(\r\n\t\t\tSELECT @Codigo, @Nombre, @Contacto, @Cargo, @Direccion,\r\n\t\t\t\t   @Ciudad, @Region, @CodigoPostal, @Pais, @Fono, @Fax) \r\n\t\t\t\t   As ClientesOrigen \r\n\t\t\t\t\t(&#91;CustomerID], &#91;CompanyName], &#91;ContactName], &#91;ContactTitle], &#91;Address], \r\n\t\t\t\t\t&#91;City], &#91;Region], &#91;PostalCode], &#91;Country], &#91;Phone], &#91;Fax])\r\n\t\tON ClientesDestino.CustomerId = ClientesOrigen.CustomerId\r\n\tWHEN MATCHED then  -- Cliente encontrado\r\n\t  UPDATE \r\n\t\tSET &#91;CustomerID]=ClientesOrigen.&#91;CustomerID],\r\n\t\t\t&#91;CompanyName]=ClientesOrigen.&#91;CompanyName], \r\n\t\t\t&#91;ContactName]=ClientesOrigen.&#91;ContactName],\r\n\t\t\t&#91;ContactTitle]=ClientesOrigen.&#91;ContactTitle],\r\n\t\t\t&#91;Address]=ClientesOrigen.&#91;Address], \r\n\t\t\t&#91;City]=ClientesOrigen.&#91;City],\r\n\t\t\t&#91;Region]=ClientesOrigen.&#91;Region], \r\n\t\t\t&#91;PostalCode]=ClientesOrigen.&#91;PostalCode],\r\n\t\t\t&#91;Country]=ClientesOrigen.&#91;Country],\r\n\t\t\t&#91;Phone]=ClientesOrigen.&#91;Phone],\r\n\t\t\t&#91;Fax]=ClientesOrigen.&#91;Fax]\r\n\tWHEN NOT MATCHED THEN -- Cliente no encontrado\r\n\t\t\tINSERT VALUES\r\n\t\t\t (@Codigo, @Nombre, @Contacto, @Cargo, @Direccion,\r\n\t\t\t\t   @Ciudad, @Region, @CodigoPostal, @Pais, @Fono, @Fax);\r\ngo<\/code><\/pre>\n\n\n\n<p><strong>Listado de los clientes, se puede ver que el cliente con el que se va a ejecutar el SP no existe.<\/strong> Note que el cliente con ID BBC45 no existe.<\/p>\n\n\n\n<p><strong>Select * from dbo.customers<br>go<br><\/strong>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-resized\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01-1024x344.png\" alt=\"\" class=\"wp-image-2705\" width=\"885\" height=\"297\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01-1024x344.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01-300x101.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01-768x258.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01-1536x516.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01-795x267.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_01.png 1593w\" sizes=\"auto, (max-width: 885px) 100vw, 885px\" \/><\/a><\/figure>\n\n\n\n<p><\/p>\n\n\n\n<p>Ejecutar el SP con un nuevo cliente.<br>Los datos del nuevo cliente son:<br>Codigo = 'BBC45'<br>Nombre = 'Black Software Ingenieros'<br>Contacto = 'FERNANDO LUQUE SANCHEZ'<br>Cargo = 'Gerente de Procesos'<br>Direccion = 'Av. Arequipa 9494'<br>Ciudad = 'Lima'<br>Region = 'CE'<br>CodigoPostal = '11580'<br>Pais = 'Per\u00fa'<br>Fono = '949483333'<br>Fax = '052-525258'<\/p>\n\n\n\n<p><strong>Ejecutando el procedimiento almacenado.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-regular-font-size\"><code>Execute spClientesActualizaInsertaMerge \r\n\t\t@Codigo  = 'BBC45',\r\n\t\t@Nombre = 'Black Software Ingenieros',\r\n\t\t@Contacto = 'FERNANDO LUQUE SANCHEZ',\r\n\t\t@Cargo = 'Gerente de Procesos',\r\n\t\t@Direccion = 'Av. Arequipa 9494',\r\n\t\t@Ciudad = 'Lima',\r\n\t\t@Region = 'CE',\r\n\t\t@CodigoPostal = '11580',\r\n\t\t@Pais = 'Per\u00fa' ,\r\n\t\t@Fono = '949483333',\r\n\t\t@Fax  = '052-525258'\r\ngo<\/code><\/pre>\n\n\n\n<p>Listado de los clientes<br>select * from dbo.customers<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"316\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02-1024x316.png\" alt=\"\" class=\"wp-image-2706\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02-1024x316.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02-300x93.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02-768x237.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02-1536x474.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02-795x245.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_02.png 1733w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Cliente con ID BBC45 insertado<\/figcaption><\/figure>\n\n\n\n<p><strong>Ejecutamos el SP con el mismo c\u00f3digo del cliente pero con algunos datos cambiados.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-regular-font-size\"><code>Execute spClientesActualizaInsertaMerge \r\n\t\t@Codigo  = 'BBC45',\r\n\t\t@Nombre = 'Black Software Apps',\r\n\t\t@Contacto = 'FERNANDO LUQUE SANCHEZ',\r\n\t\t@Cargo = 'Gerente General',\r\n\t\t@Direccion = 'Av. Guardia Civil 189',\r\n\t\t@Ciudad = 'Lima',\r\n\t\t@Region = 'CE',\r\n\t\t@CodigoPostal = '11900',\r\n\t\t@Pais = 'Per\u00fa' ,\r\n\t\t@Fono = '949363636',\r\n\t\t@Fax  = '052-115511'\r\ngo<\/code><\/pre>\n\n\n\n<p><strong>Listado de los clientes<\/strong><br>select * from dbo.customers<br>go<br>El resultado se muestra en la siguiente imagen<br>Note que se han actualizado el nombre del cliente, el cargo, la direcci\u00f3n, el c\u00f3digo postal, el tel\u00e9fono y el fax.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03-1024x314.png\" alt=\"\" class=\"wp-image-2707\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03-1024x314.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03-300x92.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03-768x235.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03-1536x471.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03-795x244.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_03.png 1729w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p class=\"has-large-font-size\"><strong>Ejercicio 2<\/strong><\/p>\n\n\n\n<p>Usando procedimientos almacenados individuales, uno para la inserci\u00f3n y otro para la actualizaci\u00f3n de datos, luego estos procedimientos se va a comparar con el use del procedimiento del ejercicio 1 para ver cual es mas eficiente.<\/p>\n\n\n\n<p><strong>Procedimiento para insertar un registro.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-regular-font-size\"><code>Create or alter procedure spClientesInserta\r\n\t(\t\r\n\t\t@Codigo nchar(5),\r\n\t\t@Nombre nvarchar(40),\r\n\t\t@Contacto nvarchar(30),\r\n\t\t@Cargo nvarchar(30),\r\n\t\t@Direccion nvarchar(60),\r\n\t\t@Ciudad nvarchar(15),\r\n\t\t@Region nvarchar(15),\r\n\t\t@CodigoPostal nvarchar(10),\r\n\t\t@Pais nvarchar(15),\r\n\t\t@Fono nvarchar(24),\r\n\t\t@Fax nvarchar(24)\r\n\t)\r\nAs\r\n\tINSERT into dbo.Customers \r\n\t\t  (&#91;CustomerID], &#91;CompanyName], &#91;ContactName], &#91;ContactTitle], &#91;Address], \r\n\t\t    &#91;City], &#91;Region], &#91;PostalCode], &#91;Country], &#91;Phone], &#91;Fax])\r\n\t\t\tVALUES\r\n\t\t (@Codigo, @Nombre, @Contacto, @Cargo, @Direccion,\r\n\t\t   @Ciudad, @Region, @CodigoPostal, @Pais, @Fono, @Fax);\r\ngo<\/code><\/pre>\n\n\n\n<p><strong>Ejecutando el procedimiento almacenado<\/strong><\/p>\n\n\n\n<p>Execute spClientesInserta<br>@Codigo = 'ILC24',<br>@Nombre = 'ACW Contratistas',<br>@Contacto = 'Ingrid Llanos',<br>@Cargo = 'CEO',<br>@Direccion = 'Av. Los Laureles 4995',<br>@Ciudad = 'Lima',<br>@Region = 'CE',<br>@CodigoPostal = '52525',<br>@Pais = 'Per\u00fa' ,<br>@Fono = '969694947',<br>@Fax = '052-365263'<br>go<\/p>\n\n\n\n<p><strong>Procedimiento para modificar los datos de un registro.<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code has-regular-font-size\"><code>Create or alter procedure spClientesActualiza\r\n\t(\t\r\n\t\t@Codigo nchar(5),\r\n\t\t@Nombre nvarchar(40),\r\n\t\t@Contacto nvarchar(30),\r\n\t\t@Cargo nvarchar(30),\r\n\t\t@Direccion nvarchar(60),\r\n\t\t@Ciudad nvarchar(15),\r\n\t\t@Region nvarchar(15),\r\n\t\t@CodigoPostal nvarchar(10),\r\n\t\t@Pais nvarchar(15),\r\n\t\t@Fono nvarchar(24),\r\n\t\t@Fax nvarchar(24)\r\n\t)\r\nAs\r\n\t UPDATE  dbo.Customers\r\n\t\tSET &#91;CompanyName]=@Nombre, \r\n\t\t\t&#91;ContactName]=@Contacto,\r\n\t\t\t&#91;ContactTitle]=@Cargo,\r\n\t\t\t&#91;Address]=@Direccion, \r\n\t\t\t&#91;City]=@Ciudad,\r\n\t\t\t&#91;Region]=@Region, \r\n\t\t\t&#91;PostalCode]=@CodigoPostal,\r\n\t\t\t&#91;Country]=@Pais,\r\n\t\t\t&#91;Phone]=@Fono,\r\n\t\t\t&#91;Fax]=@Fax\r\n\t\t\twhere &#91;CustomerID]=@Codigo\r\ngo<\/code><\/pre>\n\n\n\n<p><strong>Ejecutando el procedimiento almacenado para actualizar los datos de un cliente.<\/strong><\/p>\n\n\n\n<p>Execute spClientesActualiza<br>@Codigo = 'ILC24',<br>@Nombre = 'ACW Contratistas',<br>@Contacto = 'Ing. Esmeralda Sandoval Wong',<br>@Cargo = 'Administrador',<br>@Direccion = 'Av. San Pablo 4995',<br>@Ciudad = 'Lima',<br>@Region = 'CE',<br>@CodigoPostal = '45154',<br>@Pais = 'Per\u00fa' ,<br>@Fono = '969694947',<br>@Fax = '052-365263'<br>go<\/p>\n\n\n\n<p><strong>Listado de clientes, se puede ver el cliente nuevo.<br><\/strong>select * from dbo.customers<br>go<br>El resultado se muestra en la siguiente imagen<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"314\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04-1024x314.png\" alt=\"\" class=\"wp-image-2708\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04-1024x314.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04-300x92.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04-768x235.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04-1536x471.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04-795x244.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_04.png 1743w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<script async=\"\" src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><\/script>\n<ins class=\"adsbygoogle\" style=\"display:block; text-align:center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-2636008503986218\" data-ad-slot=\"1902193434\"><\/ins>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script<\/script>\n\n\n\n<p class=\"has-larger-font-size\"><strong>Comparando los Costos de ejecuci\u00f3n de cada opci\u00f3n<\/strong><\/p>\n\n\n\n<p>Para mostrar el costo del uso de cada opci\u00f3n se insertar\u00e1 el mismo registro, obviamente despu\u00e9s de usar Merge se procede a borrar el registro para ejecutar el SP que inserta el registro, mostrando para cada caso el tiempo de ejecuci\u00f3n usando el Plan de ejecuci\u00f3n estimado.<\/p>\n\n\n\n<p><strong>Insertar un registro con Merge<\/strong><\/p>\n\n\n\n<p>Execute spClientesActualizaInsertaMerge<br>@Codigo = 'ABC96',<br>@Nombre = 'ThunderApps Co.',<br>@Contacto = 'Leo Campos Guevara',<br>@Cargo = 'Gerente Comercial',<br>@Direccion = 'Av. Ciro Alegr\u00eda 575',<br>@Ciudad = 'Trujillo',<br>@Region = 'CE',<br>@CodigoPostal = '54858',<br>@Pais = 'Per\u00fa' ,<br>@Fono = '949422112',<br>@Fax = '052-36362'<br>go<\/p>\n\n\n\n<p>El Plan de ejecuci\u00f3n estimado con el costo se muestra en la imagen siguiente<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05-1024x412.png\" alt=\"\" class=\"wp-image-2709\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05-1024x412.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05-300x121.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05-768x309.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05-1536x617.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05-795x320.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_05.png 1744w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Plan de ejecuci\u00f3n estimado de la inserci\u00f3n de un cliente con el SP que usa Merge<\/figcaption><\/figure>\n\n\n\n<p><strong>Note que el costo es: 0.153338<\/strong><\/p>\n\n\n\n<p><strong>Borramos el registro para insertarlo con el SP individual.<\/strong><br>delete dbo.Customers where CustomerID = 'ABC96'<br>go<\/p>\n\n\n\n<p><strong>Insertar el registro con el SP individual de inserci\u00f3n creado llamado spClientesInserta<\/strong><\/p>\n\n\n\n<p>Execute spClientesInserta<br>@Codigo = 'ABC96',<br>@Nombre = 'ThunderApps Co.',<br>@Contacto = 'Leo Campos Guevara',<br>@Cargo = 'Gerente Comercial',<br>@Direccion = 'Av. Ciro Alegr\u00eda 575',<br>@Ciudad = 'Trujillo',<br>@Region = 'CE',<br>@CodigoPostal = '54858',<br>@Pais = 'Per\u00fa' ,<br>@Fono = '949422112',<br>@Fax = '052-36362'<br>go<\/p>\n\n\n\n<p>El Plan de ejecuci\u00f3n estimado con el costo se muestra en la imagen siguiente<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"241\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06-1024x241.png\" alt=\"\" class=\"wp-image-2710\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06-1024x241.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06-300x71.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06-768x181.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06-1536x361.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06-795x187.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_06.png 1744w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Note que el costo es: 0.0500062<\/strong><\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background has-large-font-size\"><strong>Comparando:<br><\/strong>Costo usando SP con Merge para insertar: 0.1533380<br>Costo usando SP individual al insertar:         0.0500062<br><strong>Definitivamente la mejor opci\u00f3n es trabajar con SP sin Merge para la acci\u00f3n de insertar.<\/strong><\/p>\n\n\n\n<p class=\"has-large-font-size\"><strong>Actualizar los datos del cliente<\/strong><\/p>\n\n\n\n<p>Usando el SP con Merge llamado spClientesActualizaInsertaMerge, el cliente con c\u00f3digo ABC96 si existe.<\/p>\n\n\n\n<p>Execute spClientesActualizaInsertaMerge<br>@Codigo = 'ABC96',<br>@Nombre = 'ThunderApps Co.',<br>@Contacto = 'Fernando Le\u00f3n Llanos',<br>@Cargo = 'Gerente de Marketing',<br>@Direccion = 'Av. Dinamarca 22441',<br>@Ciudad = 'Trujillo',<br>@Region = 'CE',<br>@CodigoPostal = '54858',<br>@Pais = 'Per\u00fa' ,<br>@Fono = '94959697',<br>@Fax = '052-12128'<br>go<br>El Plan de ejecuci\u00f3n estimado con el costo se muestra en la imagen siguiente<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"425\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07-1024x425.png\" alt=\"\" class=\"wp-image-2711\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07-1024x425.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07-300x125.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07-768x319.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07-1536x638.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07-795x330.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_07.png 1744w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Plan de ejecuci\u00f3n estimado de la modificaci\u00f3n de los datos de un cliente con el SP que usa Merge<\/figcaption><\/figure>\n\n\n\n<p><strong>Note que el costo es: 0.153338<\/strong><\/p>\n\n\n\n<p>Actualizar el registro usando el SP llamado spClientesActualiza<\/p>\n\n\n\n<p>Execute spClientesActualiza<br>@Codigo = 'ABC96',<br>@Nombre = 'ThunderApps Co.',<br>@Contacto = 'Fernando Le\u00f3n S\u00e1nchez',<br>@Cargo = 'Gerente de Finanzas',<br>@Direccion = 'Av. M\u00f3naco 46655',<br>@Ciudad = 'Trujillo',<br>@Region = 'CE',<br>@CodigoPostal = '11300',<br>@Pais = 'Per\u00fa' ,<br>@Fono = '949798953',<br>@Fax = '052-36363'<br>go<br>El Plan de ejecuci\u00f3n estimado con el costo se muestra en la imagen siguiente<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><a href=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"260\" src=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08-1024x260.png\" alt=\"\" class=\"wp-image-2712\" srcset=\"https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08-1024x260.png 1024w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08-300x76.png 300w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08-768x195.png 768w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08-1536x390.png 1536w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08-795x202.png 795w, https:\/\/manualsqlserver.com\/wp-content\/uploads\/2023\/01\/ManualSQL_ComparandoMerge_SP_08.png 1746w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure>\n\n\n\n<p><strong>Note que el costo es: 0.0532883<\/strong><\/p>\n\n\n\n<p class=\"has-pale-cyan-blue-background-color has-background has-large-font-size\"><strong>Comparando la opci\u00f3n de modificaci\u00f3n:<\/strong><br>Costo usando SP con Merge para insertar: 0.1533380<br>Costo usando SP individual al insertar:         0.0532883<br><strong>Definitivamente la mejor opci\u00f3n es trabajar con SP sin Merge para la acci\u00f3n de modificar.<\/strong><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Comparando Merge con Store Procedures individuales La instrucci\u00f3n Merge realiza instrucciones de inserci\u00f3n de registros, actualizaci\u00f3n o eliminaci\u00f3n de registros en una tabla de destino en la misma base de datos o en otra base de datos seg\u00fan los resultados de combinar los registros con una tabla de origen, esta tabla origen puede ser una &hellip; <\/p>\n<p><a class=\"more-link btn\" href=\"https:\/\/manualsqlserver.com\/?p=2703\">Seguir leyendo<\/a><\/p>\n","protected":false},"author":1,"featured_media":2704,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[271,8],"tags":[74,188,242],"class_list":["post-2703","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-merge","category-programacion","tag-merge","tag-sp","tag-store-procedure","nodate","item-wrap"],"_links":{"self":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2703","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2703"}],"version-history":[{"count":1,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2703\/revisions"}],"predecessor-version":[{"id":2713,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/posts\/2703\/revisions\/2713"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=\/wp\/v2\/media\/2704"}],"wp:attachment":[{"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2703"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2703"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/manualsqlserver.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2703"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}