Cuándo usar instrucciones basadas en conjuntos y operaciones basadas en filas
Las instrucciones basadas en conjuntos se usan para actualizar, insertar o eliminar varios registros de datos de una tabla.
Las operaciones basadas en filas o no basadas en conjuntos se utilizan para actualizar, insertar o eliminar un solo registro de una tabla.
El uso de consultas basadas en conjuntos puede aumentar considerablemente el rendimiento al reducir la cantidad de llamadas que se realizan a la base de datos.
En una operación basada en filas es necesario llamar a la base de datos en cada registro que se deba manipular, mientras que en una instrucción basada en conjuntos solo se llama a la base de datos una vez.
Por ejemplo, si necesita actualizar 100 registros en una tabla, una operación basada en filas activaría al método de actualización y llamaría a la base de datos 100 veces para actualizar todos los registros. Una instrucción basada en conjuntos activaría el método update_recordset una vez y llamaría a la base de datos en una sola ocasión para actualizar todos los registros.
Indicamos tres ejemplos de instrucciones basadas en conjuntos que se pueden usar:
Update_recordset: se utiliza para actualizar varios registros a la vez.Delete_from: se utiliza para eliminar varios registros a la vez.Insert_recordset: se utiliza para copiar varios registros de una o más tablas en otra tabla.
Los update_recordset pueden actualizar varios campos de una tabla. También puede especificar una cláusula Where para determinar qué registros se actualizan. A continuación, se muestra un ejemplo de update_recordset donde se indica la tabla y se llama al update_recordset para que actualice los campos PaymMode y Divisa del cliente solo en los clientes en los que el campo CustGroup sea igual a "EE. UU.". Tenga en cuenta que si se anula el método de actualización, el update_recordset llamará al método de actualización cada vez, en lugar de una veces para todos.
CustTable custTable;
Update_recordset custTable
Setting
PaymMode = 'Check',
Currency = 'USD'
Where custTable.CustGroup == 'US';
El método delete_from es como el update_recordset. Puede eliminar varios registros al mismo tiempo de una tabla y puede usar una cláusula Where para determinar qué registros se van a eliminar. En el siguiente ejemplo, se indica la tabla y, a continuación, se llama a delete_from para eliminar todos los registros en los que el campo CustGroup del cliente es igual a "EE. UU."
CustTable custTable;
Delete_from custTable
Where custTable.CustGroup == 'US';
Insert_recordset le permite insertar varios registros de una tabla en otra tabla. Puede usar una cláusula Where para determinar qué registros va a insertar y puede usar variables para la inserción. En el siguiente ejemplo, se indican la tabla en la que se realizará la inserción y la tabla de la que extraerán los datos. A continuación, se llama al insert_recordset para insertar datos en los campos que se enumeran entre paréntesis. Posteriormente, se llama a los campos de la tabla de almacenamiento provisional en el orden de los campos enumerados entre paréntesis. Ahora, esos campos se insertarán en la CustTable en la que el campo CustGroup del cliente almacenado provisionalmente sea igual a "EE. UU."
CustTable custTable;
CustCustomerBaseStaging custCustomerBaseStaging;
Insert_recordset custTable (accountNum, custGroup, paymMode, currency)
Select CustomerAccount, CustomerGroupId, PaymentMethod,SalesCurrencyCode
From custCustomerBaseStaging
Where custCustomerBaseStaging.CustGroupID == 'US';