J'ai une table de base de données qui contient 900 millions d'enregistrements. Je suis dans une situation où j'ai besoin de mettre à jour 4 clés différentes dans cette table, en les joignant à une dimension et en plaçant la clé de la table de faits à la clé de la dimension. J'ai écrit 4 scripts SQL différents (voir l'exemple ci-dessous) pour effectuer la mise à jour, mais le problème est qu'il prend trop de temps à s'exécuter. La requête est en cours depuis plus de 20 heures et je ne sais même pas jusqu'où elle ira et combien de temps cela prendra. Est-ce que je peux faire quelque chose pour améliorer cela, alors cela ne prend que quelques heures à compléter. Est-ce que l'ajout d'index améliorerait cela?SQL - Performances de requête de mise à jour pour les enregistrements de grande table (900 millions)
UPDATE f
SET f.ClientKey = c.ClientKey
FROM dbo.FactSales f
JOIN dbo.DimClient c
ON f.ClientId = c.ClientId
Vous n'avez pas testé sur un sous-ensemble plus petit avant de l'exécuter sur une table de 900 000 000 lignes? Aie. Le pire des cas serait un index sur la colonne mise à jour. Je préférerais créer une nouvelle table, écrire une seule sélection avec toutes les 4 jointures, insérer/sélectionner, supprimer et renommer. – dnoeth
Si (ou plus probable "quand") cela va revenir en arrière ... ouch ... –