J'ai une table avec beaucoup d'enregistrements (pourrait être plus de 500 000 ou 1 000 000). J'ai ajouté une nouvelle colonne dans ce tableau et j'ai besoin de remplir une valeur pour chaque ligne de la colonne, en utilisant la valeur de ligne correspondante d'une autre colonne dans cette table.Manière efficace de mettre à jour toutes les lignes d'un tableau
J'ai essayé d'utiliser des transactions distinctes pour sélectionner chaque morceau suivant de 100 enregistrements et mettre à jour la valeur pour eux, mais cela prend des heures pour mettre à jour tous les enregistrements Oracle10 par exemple.
Quel est le moyen le plus efficace de le faire en SQL, sans utiliser certaines fonctionnalités spécifiques au dialecte, pour qu'il fonctionne partout (Oracle, MSSQL, MySQL, PostGre, etc.)?
INFORMATIONS SUPPLÉMENTAIRES: Il n'y a pas de champs calculés. Il y a des index. Les instructions SQL générées utilisées mettent à jour la table ligne par ligne.
Peu de gens GOTO, l'extrême disabiling 'INDEX' es si elles sont présentes sur la mise à jour/colonne instered, et laisser le travail de nuit, il analyse . – Guru
Nous avons besoin de plus d'informations. Parlez-nous du schéma de la table ... des colonnes "calculées"? Des index? 500k - 1m lignes n'est pas un grand nombre de dossiers par tout étirement. – Timothy
Merci à tous pour la réponse rapide. J'ai ignoré la partie que j'utilise les instructions SQL générées. Maintenant, j'ai regardé en profondeur et il semble que les mises à jour SQL générées rangée par rangée! Donc, toute tentative de séparer en blocs de 100 enregistrements était vide de sens ... Je vais changer le code pour générer une instruction SQL UPDATE correcte, comme dans la réponse acceptée. –