SQL WORLD
En mi artículo anterior he dado la idea de cómo actualizar los registros en sql. En este artículo, me gustaría dar una idea detallada sobre la forma de actualizar la mayor parte de los registros en Oracle Database con varios ejemplos.Me gustaría dar los ejemplos de actualizar la mayor parte de los registros en oracle, una tabla llamada Cliente y otra tabla llamada Empresa.
¿Cuáles son las diferentes formas de actualizar la mayor parte de los registros en oracle database?
Hay varias metodologías que estamos utilizando para actualizar la mayor parte de los registros en oracle database. Me gustaría discutir las siguientes formas en detalle con ejemplos de la industria de la vida real. Estos ejemplos le darán una idea clara sobre el proceso de actualización de oracle en detalle.
Suposiciones:
Asumimos que hay dos tablas – Información del cliente – Que es el nombre del cliente que visita el sitio web de comercio electrónico especificado. Hay millones de registros en la tabla de clientes, pero asumimos que hay 999999 registros en la tabla de clientes. Hay otra tabla llamada Customer_Entry que también tiene registros 777777. La clave principal denominada Customer_ID se encuentra en ambas tablas.
Tipos de actualizaciones :
1.Actualizar usando bucle For
2.Actualización tradicional (Actualización de registros individualmente)
3.Actualización masiva mediante RECOPILACIÓN MASIVA y PARA TODAS las declaraciones
4.SQL DE ACTUALIZACIÓN DIRECTA
5.Instrucción MERGE para registrar actualizaciones rápido
6.Actualizar usando el método de vista EN línea.
Necesitamos ejecutar todas las formas y comprobar el rendimiento e de las diferentes instrucciones de actualización.
Escenario 1 : Forma tradicional de actualizar registros individuales y confirmar después de for loop
begin
for cusrsor_1 in (seleccionar * del cliente)
loop
update customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=c.customer_product donde
customer_id= c.customer_id;
end loop; commit;
end;
/PL/SQL procedimiento completado con éxito.
Transcurrido: 00:02: 42.36
Si puede comprobar el primer ejemplo en el que estamos tratando de actualizar todos los registros utilizando el bucle for y luego usar la instrucción de confirmación. Si puede ejecutar el bloque PL SQL específico. Se tarda unos 2 minutos y 42 segundos en completar el procedimiento y actualizar los registros.
Escenario 2: Forma tradicional de actualizar registros individuales y confirmar dentro para bucle
begin
for cusrsor_1 in (seleccionar * del cliente)
bucle
update customer_entry
set
customer_no = cursor_1.customer_no, customer_name=cursor_1.customer_name, customer_product=c.customer_product donde
customer_id= c.customer_id;
commit;
end loop;
end;
/PL/SQL procedimiento completado con éxito.
Elapsed: 00:03:58.39
Si podemos comprobar el proceso y el tiempo para ejecutar los registros o actualizar los registros en la base de datos es de aproximadamente 3 minutos y 58 segundos. Here loop ejecutará una declaración de confirmación después de cada actualización de registro, por lo que el tiempo para actualizar el registro es mayor que el de un solo registro de confirmación.
Escenario 3 : ACTUALIZACIÓN MASIVA del uso de BULK COLLECT y PARA TODOS
declarar
escriba customer_t es la tabla de Clientes%rowtype índice
pls_integer; l_customer_data customer_t;
begin Select *
a granel recoger en l_customer_data del Cliente;
forall rec en 1 .. datos del cliente.count
update customer_entry e set e. customer_no= l_customer_data (rec).customer_no,
e. customer_name = l_employee_data (rec).customer_name,
e. customer_product = l_employee_data (rec).customer_product
donde r. customer_id = l_employee_data (rec).customer_id;
commit;
end;
PL/SQL procedimiento completado con éxito.
Transcurrido: 00:00:53.55
La mayor parte de recoger método es el método más rápido que los métodos tradicionales. Necesitamos crear una variable de tipo donde podamos recuperar todos los datos del cliente y necesitamos usar la instrucción de recopilación masiva en la cláusula forall para que los registros de la cláusula forall o la tabla especificada se actualicen correctamente. Si podemos ver el tiempo Transcurrido es de alrededor de 54 segundos que es más rápido que otros métodos.
4. SQL DE ACTUALIZACIÓN DIRECTA
begin
update customer_entry ent
set (customer_no, customer_name, customer_product)=
( seleccione customer_no, customer_name, customer_product de customer c donde c. customer_id = ent.customer_id )
donde c.customer_id en (seleccionar customer_id de cliente);
commit;
end;
PL/SQL procedimiento completado con éxito.
Transcurrido: 00:00: 58.22
La actualización directa tardará 58 segundos en actualizar todos los registros. si podemos comparar esto con el bulto recoger tomó 3-4 segundos extra para actualizar todos los registros
Escenario 5 : MERGE – la manera más Rápida de actualización masiva de registros
begin
combinar en customer_entry er utilizando
cliente c
en (er.customer_id= c. customer_id)
cuando coincide,
actualizar el conjunto er.número de cliente = c.número de cliente,
er.cutomer_name= c. customer_name,
er.customer_product= c.customer_product;
commit;
end;
PL/SQL procedimiento completado con éxito.
Transcurrido: 00:00: 36.23
La forma más rápida de actualizar la mayor parte de los registros es utilizando la instrucción Merge. La instrucción merge tardó 36 segundos en actualizar los registros de forma rápida.
Escenario 6: ACTUALIZAR usando el método de vista EN LÍNEA
begin
actualizar
(
seleccione r.customer_id, r.customer_number, r.customer_name, r.customer_product,
correo.cliente_nr cnum, e.customer_name cname, e.customer_product cprod
a partir de customer_entry r, cliente de correo
donde r.customer_id= e.customer_id
) 9
establecer cliente_nr = cnum
customer_name= cname,
customer_product= cprod;
commit;
end;
PL/SQL procedimiento completado con éxito.
Transcurrido: 00:00:37.97
Con el uso del método de vista en línea, la actualización masiva se completará aproximadamente en 38 segundos, que también es la forma rápida como la instrucción Merge.
¿Qué aprendemos?
El pensamiento de cada desarrollador SQL o PLSQL es RECOPILACIÓN MASIVA y FOR ALL statement es mejor para realizar operaciones masivas. Si podemos observar los detalles en las consultas anteriores a 6, la instrucción Update SQL estaría dando el mejor rendimiento que la recopilación masiva y para todos. Por lo tanto, intente usar código SQL en la API PL/SQL para realizar una actualización rápida. Pero variará de un escenario a otro para que siempre pueda verificar los escenarios. Si desea un rendimiento más rápido, intente escribir la instrucción merge o la vista en línea.
Leave a Reply