2009-04-03 7 views
2

Ich habe eine Tabelle mit 40 Millionen Zeilen.
Ich möchte etwa 2 Millionen auf einmal aufnehmen und sie "verarbeiten".
Warum?
Cos Verarbeitung Verarbeitung 10million + Zeilen verschlechtert Leistung und oft mal aus. (Ich brauche dies, um unabhängig von der Datengröße zu arbeiten, so kann ich das Auszeitlimit nicht weiter erhöhen.)
Außerdem verwende ich SQL Server.
Wie kann ich einen Stapel von allen Zeilen in einer SQL-Tabelle zu einem Zeitpunkt abrufen?

Antwort

1

Gibt es einen zunehmenden Schlüssel, z. B. einen Identitätsschlüssel? Und ist es der gruppierte Index? Wenn ja, sollte es recht einfach sein, die letzte Taste, die Sie bekam zu verfolgen, und Dinge zu tun, wie:

SELECT TOP 1000000 * 
FROM [MyTable] 
WHERE [Id] > @LastId 
ORDER BY [Id] 

auch - sicher sein, es mit so etwas wie ExecuteReader zu lesen, so dass Sie nicht zu viele Pufferung Reihen.

Natürlich können Sie, abgesehen von ein paar tausend Zeilen, auch nur gelegentlich einen Hin- und Rückflug akzeptieren und eine Anzahl von Anfragen für (sagen wir) 10000 Zeilen gleichzeitig machen. Ich denke nicht, dass dies in der Realität weniger effizient wäre (einige Millisekunden hier und da).

+0

Ich habe keinen Identitätsschlüssel. Das Leben wäre einfach, wenn ich es täte. Vielleicht werde ich einfach einen Identitätsschlüssel zur Dang-Tabelle hinzufügen. –