SQL WORLD
Dans mon article précédent, j’ai donné l’idée de la mise à jour des enregistrements en sql. Dans cet article, je voudrais donner une idée détaillée de la façon de mettre à jour la masse des enregistrements dans la base de données Oracle avec plusieurs exemples.Je voudrais donner les exemples de mise à jour de la masse d’enregistrements dans oracle one une table nommée Client et une autre table nommée Société.
Quelles sont les différentes façons de mettre à jour la masse des enregistrements dans la base de données oracle?
Il existe différentes méthodologies que nous utilisons pour mettre à jour la masse des enregistrements dans la base de données oracle. Je voudrais discuter des moyens suivants en détail avec des exemples réels de l’industrie. Ces exemples vous donneront une idée claire du processus de mise à jour d’oracle en détail.
Hypothèses:
Nous supposons qu’il existe deux tableaux – Informations client – Qui sont le nom du client visitant le site Web de commerce électronique spécifié. Il y a des millions d’enregistrements dans la table client, mais nous supposons qu’il y a 999999 enregistrements dans la table client. Il existe une autre table nommée Customer_Entry qui contient également 777777 enregistrements. La clé primaire nommée Customer_ID se trouve dans les deux tables.
Types de mises à jour :
1.Mise à jour en utilisant la boucle For
2.Mise à jour traditionnelle (Mise à jour des enregistrements individuellement)
3.Mise à jour en bloc à l’aide de la COLLECTE en BLOC et de l’instruction FOR ALL
4.MISE À JOUR DIRECTE SQL
5.L’instruction MERGE pour enregistrer les mises à jour rapidement
6.Mise à jour à l’aide de la méthode de vue EN LIGNE.
Nous devons exécuter toutes les manières et vérifier les performances e des différentes instructions de mise à jour.
Scénario 1 : Méthode traditionnelle de mise à jour des enregistrements individuels et de validation après la boucle for
commencer
pour cusrsor_1 dans (select *from customer)
boucle
mettre à jour customer_entry
définir
customer_no=cursor_1.customer_no, customer_name = cursor_1.customer_name, customer_product=c.customer_product où
customer_id= c.customer_id;
fin de la boucle; commit;
end;
/PL/SQL procédure terminée avec succès.
Écoulé:00:02:42.36
Si vous pouvez vérifier le premier exemple où nous essayons de mettre à jour tous les enregistrements en utilisant for loop, puis utilisez l’instruction commit. Si vous pouvez exécuter le bloc SQL PL spécifique. Il faut environ 2 minutes et 42 secondes pour terminer la procédure et mettre à jour les enregistrements.
Scénario 2: Méthode traditionnelle de mise à jour des enregistrements individuels et de validation à l’intérieur de la boucle for
commencer
pour cusrsor_1 in (select*from customer)
loop
update customer_entry
set
customer_no=cursor_1.customer_no, customer_name = cursor_1.la procédure PL/SQL s’est terminée avec succès. la procédure PL/SQL s’est terminée avec succès.Elapsed:00:03:58.39
Si nous pouvons vérifier le processus et le timing pour exécuter les enregistrements ou mettre à jour les enregistrements dans la base de données, cela dure environ 3 minutes et 58 secondes. Ici, la boucle exécutera l’instruction commit après chaque mise à jour de l’enregistrement, de sorte que le temps de mise à jour de l’enregistrement est supérieur à l’enregistrement de validation unique.
Scénario 3: MISE À JOUR en BLOC en utilisant la COLLECTE EN BLOC et POUR TOUS
declare
le type customer_t est la table de l’index de type de ligne % du client par
pls_integer; l_customer_data customer_t;
begin Select *
collecte en masse dans l_customer_data du client;
pour tous les rec dans 1.. l_données du client.compte
mettre à jour customer_entry e set e. customer_no=l_customer_data(rec).customer_no,
e.customer_name=l_employe_data(rec).customer_name,
e. customer_product=l_employe_data(rec).customer_product
où r.customer_id = l_employe_data(rec).la procédure PL/SQL est terminée avec succès.
Elapsed:00:00:53.55
La méthode de collecte en masse est une méthode plus rapide que les méthodes traditionnelles. Nous devons créer une variable de type où nous pouvons récupérer toutes les données client et nous devons utiliser l’instruction de collecte en masse dans la clause forall afin que les enregistrements de la clause forall ou de la table spécifiée soient mis à jour correctement. Si nous pouvons voir le temps écoulé, il est d’environ 54 secondes, ce qui est plus rapide que les autres méthodes.
4. LA MISE À JOUR DIRECTE SQL
begin
mettre à jour customer_entry ent
set(customer_no, customer_name, customer_product) =
(sélectionnez customer_no, customer_name, customer_product à partir du client c où c.customer_id=ent.la procédure PL/SQL est terminée avec succès. la procédure SQL est terminée avec succès.
Écoulé:00:00:58.22
La mise à jour directe prendra 58 secondes pour mettre à jour tous les enregistrements. si nous pouvons comparer cela avec la collecte en vrac, il a fallu 3 à 4 secondes supplémentaires pour mettre à jour tous les enregistrements
Scénario 5: INSTRUCTION de FUSION – Moyen le plus rapide de mettre à jour en vrac des enregistrements
commencer
fusionner dans customer_entry er en utilisant
client c
on(er.customer_id =c.customer_id)
lors de la correspondance, alors
mettre à jour le paramètre er.numéro de client = c.numéro de client,
er.nom_moteur =c.nom_moteur,
er.la procédure PL/SQL est terminée avec succès.
Elapsed:00:00:36.23
Le moyen le plus rapide de mettre à jour la masse des enregistrements consiste à utiliser l’instruction Merge. L’instruction merge a pris 36 secondes pour mettre à jour rapidement les enregistrements.
Scénario 6 : MISE À JOUR à l’aide de la méthode de vue EN LIGNE
begin
mise à jour
(
sélectionnez r.customer_id, r.customer_number, r.customer_name, r.si vous avez un problème avec le nom du client, vous pouvez utiliser le nom du client pour définir le nom du client, le nom du client, le nom du client, le nom du client, le nom du client, le nom du client, le nom du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client, le numéro du client. customer_product=cprod;
commit;
end;
Procédure PL/SQL terminée avec succès.
Elapsed:00:00:37.97
En utilisant la méthode de vue en ligne, la mise à jour en bloc se terminera environ en 38 secondes, ce qui est également le moyen rapide comme l’instruction Merge.
Ce que nous apprenons ?
La pensée de chaque développeur SQL ou PLSQL est la COLLECTE EN BLOC et POUR TOUTES les instructions est meilleure pour effectuer des opérations en bloc. Si nous pouvons observer les détails des 6 requêtes ci-dessus, l’instruction Update SQL donnerait de meilleures performances que la collecte en masse et pour tous. Essayez donc d’utiliser du code SQL dans l’API PL / SQL pour effectuer une mise à jour rapide. Mais cela variera de scénario en scénario afin que vous puissiez toujours vérifier les scénarios. Si vous voulez des performances les plus rapides, essayez d’écrire une instruction de fusion ou une vue en ligne.
Leave a Reply