2017-10-18 6 views
-1

(SSIS) J'ai une table cible qui a 32 millions d'enregistrements, et je veux juste comparer avec les nouveaux venus 32 millions d'enregistrements, dans ce qui vient de nouveaux enregistrements il peut y avoir (nouveaux enregistrements et les enregistrements mis à jour ou modifiés ainsi que les anciens enregistrements) .je souhaite comparer et insérer de nouveaux enregistrements, mettre à jour ou modifier des enregistrements et omettre les anciens enregistrements. voir j'ai utilisé lookup a pris trop de temps. alors s'il vous plaît aidez-moi à surmonter la comparaison de temps pour résoudre mon problème de performance.ssis comparant deux énormes quantités de tables de données

+0

Cela n'a rien à voir avec SSIS. Soit effectuer des jointures, ou * ne pas * apporter des enregistrements 32M. Activez le suivi des modifications sur la base de données source et * seulement * les lignes modifiées. Sans le suivi des modifications, la comparaison prendra beaucoup de temps - même avec les index, vous * comparez * 32M lignes avec 32M lignes. –

+0

En dehors de cela, vous ne fournissez aucune information donc on ne peut que spéculer. Les données source ont-elles une colonne 'changed' ou non? Vous pouvez l'utiliser pour lire uniquement les lignes modifiées après la dernière importation. La clé primaire est-elle incrémentale? Vous pouvez utiliser ceci pour charger uniquement les * clés * créées après la dernière importation. Vous pouvez utiliser l'une ou l'autre option pour * éviter * le chargement des enregistrements 32M. –

+0

Une autre option consiste à effectuer les mises à jour par lots. Cela évitera de submerger tempdb et de remplir le journal des transactions. –

Répondre

0

Si vous avez besoin de consulter les 32 millions d'enregistrements entrants à chaque fois pour voir si certains d'entre eux ont changé, la solution la plus performante consiste à remplacer tous les enregistrements existants par les nouveaux qu'ils aient été modifiés ou non .

Importez tous les 32 millions d'enregistrements dans une table temporaire, puis effectuez un changement ou un changement de nom pour faire de la table intermédiaire la nouvelle table permanente.