2011-05-11 3 views
3

Une méthode plus rapide pour insérer des lignes dans une table à partir d'une instruction select et insérer dans?Insertion de millions de lignes à partir d'une autre table

Insert into PartyMain 
Select [PermID] 
     ,[IsOptOut] 
     ,[UpdatedOn] 
     ,[FK_DataSource] 
From PartyMain 

avec des lignes 6M est de prendre> 4 minutes

+0

environ 4 minutes pour 6 millions de lignes n'est pas trop mal ... environ env. 20 000 par seconde. Combien de temps l'attendiez-vous? Quel est le débit théorique maximum de votre sous-système d'E/S? –

+0

C'est 25 000 insertions par seconde, êtes-vous sûr que c'est si lent? Peut-être que ce qui compte ici sont les paramètres de réglage de la DB, tels que la façon dont elle alloue les extensions, construit les index, les facteurs de charge, etc – entonio

+0

Je suis d'accord avec Mitch ça ne sonne pas trop mal. Il serait peut-être préférable de voir si c'est vraiment nécessaire. Qu'est-ce que vous essayez d'atteindre? –

Répondre

1

insert par sélection est le moyen le plus rapide que je peux penser à insérer des données. Cependant, vous pourriez être en mesure d'apporter des améliorations au flux de travail de votre application. J'imagine avoir une sorte de bouton dans une application qui démarre le processus. Au lieu de faire l'insertion quand un utilisateur dit à l'application (Im en faisant cette hypothèse), pouvez-vous avoir un processus qui s'exécute toutes les X secondes qui effectue le transfert? Ou bien vérifiez toutes les X secondes et si le nombre de lignes à transférer est supérieur à Y, lancez le transfert ... Donc en d'autres termes, n'attendez pas qu'il y ait 6 millions de lignes.

Modifier - une autre option peut être database triggers.

0

Avez-vous des index sur PartyMain? Si oui, vous pouvez

  1. Index Drop
  2. Insérer Rangées
  3. Recréer Indexes

qui pourrait améliorer les performances.

Etes-vous sûr de lire depuis PartyMain et de l'insérer dans PartyMain?

+0

Bonne idée! Je vais essayer de voir si des améliorations sont apportées. –

+0

@Marty - super! Je suis impatient de voir si cela fonctionne pour vous. – YetAnotherUser

Questions connexes