2017-11-15 5 views
0

Ich mache einige Datenmigration von einer großen Menge von Daten, in denen ich einige Datenübereinstimmung durchführen muss, um die Operation zu identifizieren, die auf dem Datensatz ausgeführt werden muss. Dafür was ich gerade mache ist, die Daten aus der Quelle zu lesen und dann die Datensätze mit einem SQL-Befehl abzugleichen - so dass ich die Datenbank zweimal für jeden Datensatz treffen muss. Wird es die Leistung verbessern, wenn ich die Daten in einem Re-Cord-Set lese und wenn die Werte darin dann übereinstimmen?SSIS-Lesen von Datensatz statt Datenbank

lese ich von SQL Server 2008 R2

+0

was ist die Quelle"? –

+0

SQL Server 2008 R2 –

+0

Ich würde sagen, entweder Transformation nachschlagen in SSIS oder Merge-Prozedur in t-SQL verwenden –

Antwort

2

1) unter Verwendung Transformation nachschlagen ist eine effiziente Art und Weise der Zusammenführung von Aufzeichnungen

ex: enter image description here

2) Verwenden Verfahren fusionieren

ex:

MERGE [dbo].[Value] AS TARGET 
     USING [dbo].[view_Value] AS SOURCE 
     ON ( 
      TARGET.[Col1] = SOURCE.[col1] 

      ) 

    WHEN MATCHED 
    THEN 
    UPDATE SET 
    TARGET.[col3] = SOURCE.[col3] 
    TARGET.[col2] = SOURCE.[col2] 

    WHEN NOT MATCHED BY TARGET THEN 
    INSERT ([col1], [col2], [col3] ) 
    VALUES (SOURCE.[col1], SOURCE.[col2], SOURCE.[col3] ) 
+1

entweder sicherstellen, dass das Nachschlageziel indiziert ist. Wenn ich eine Suche mit einer hohen Kardinalitätssuche (dh einen Primärschlüssel für eine Faktentabelle) verwende, würde ich auch keinen Cache empfehlen (der Standard ist voller Cache). – KeithL

Verwandte Themen