L'exécution SQL suivante est trop lente, comment dois-je l'optimiser ?
UPDATE AA A
SET COL1 =
(SELECT B.COL2
FROM BB B
WHERE B.BH = A.BH
AND B.YEAR = '2016-2017'
)
WHERE A.YEAR = '2017-2018';
Parmi eux, la table AA et la table BB sont les mêmes, elles ne forment qu'une seule table
J'ai pas bien compris,
Puisque c'est la même étape, il suffit de
update table set colonne 1 = colonne 2 où condition
et c'est tout
Créez une nouvelle table basée sur la nouvelle valeur, puis fusionnez les deux tables et enfin supprimez la table temporaire ;
Créez une transaction, écrivez-y toutes les mises à jour et enfin validez
Ce que je ne comprends pas, c'est si AA et BB sont une table ou deux tables
S'il s'agit d'une table, la méthode de @prolifes peut être utilisée
S'il s'agit de deux tables,
mettre à jour AA a, BB b définit a. .col1 = b. col2 où a.bh = b.bh et a.year='2017-2018' et b.year='2016-2017',
De plus, la lenteur est liée à la taille de vos données et à la index, je donne juste une méthode générale, quelle est son efficacité, vous devez l'essayer vous-même
Merci pour vos suggestions. Au final, j'ai utilisé celle d'Internet, qui est légèrement plus efficace :
Oracle propose deux méthodes :
Mise à jour de la vue en ligne