Moyen efficace de mise à jour de toutes les lignes dans une table

J'ai une table avec un grand nombre d'enregistrements (peut être plus de 500 000 ou 1 000 000). J'ai ajouté une nouvelle colonne de ce tableau et j'ai besoin de remplir une valeur pour chaque ligne dans la colonne, à l'aide de la ligne correspondante de la valeur d'une autre colonne de ce tableau.

J'ai essayé d'utiliser des transactions distinctes pour la sélection de chaque segment suivant de 100 dossiers et mise à jour de la valeur pour eux, mais tout cela prend des heures pour mettre à jour tous les enregistrements dans Oracle10 par exemple.

Quel est le moyen le plus efficace de le faire en SQL, sans utiliser un dialecte de fonctionnalités spécifiques, de sorte 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 indices. Utilisé instructions SQL générées par la mise à jour de la table ligne par ligne.

  • Peu de gens goto à l'extrême de l'disabiling INDEX es si présent sur la mise à jour/instered colonne, et de laisser le travail de nuit pour les analyses qu'il.
  • Nous avons besoin de plus d'informations. Dites-nous sur le schéma de la table... tout "calculé" colonnes? Les index? 500k - 1m de lignes n'est PAS un grand nombre d'enregistrements par un tronçon.
  • Merci à tous pour la réponse rapide. J'ai sauté la partie que je suis en utilisant les instructions SQL générées. Maintenant j'ai regardé profondément en elle et il semble que le SQL généré des mises à jour, ligne par ligne! De sorte que toute tentative de séparer en morceaux de 100 dossiers a pas de sens... je vais changer le code pour générer une bonne instruction SQL UPDATE, comme dans la accepté de répondre.
InformationsquelleAutor m_pGladiator | 2010-04-14