J'écris un script pour migrer ma table d'utilisateurs. Donc, fondamentalement, j'ai 3 tables db: événements, utilisateurs, nouveaux utilisateurs. La table users est destinée à être remplacée par la table newusers et sera supprimée plus tard. La table newusers a une colonne avec la valeur oldusers id (PK).Performances de requête SQL
La table events2 a 2 FK: 1 pour les utilisateurs, 1 pour les nouveaux utilisateurs. J'ai déjà écrit la partie qui migre les utilisateurs d'enregistrements vers de nouveaux utilisateurs, où j'ai du mal à mettre à jour le FK dans la table des événements 2.
J'ai écrit ce qui suit:
update events2
set newusersid = newuser.id
from events2 e
inner join newusers newuser on newuser.olduserid = e.userid;
mais il prend beaucoup de temps pour exécuter. L'une des raisons de la migration est que nous voulions modifier la valeur de l'ID dans la table newusers afin que je ne puisse pas réutiliser les mêmes valeurs PK pour les enregistrements d'utilisateurs correspondants.
Merci pour votre aide
N.
Vous devrez peut-être ajouter un index temporaire sur 'olduserid', et le laisser tomber une fois la mise à jour terminée. – Blazes
Qu'est-ce que "très longtemps?" C'est une opération ponctuelle - faut-il être rapide? –
@marc_s J'utilise postgresql 8.4 – Nikko