Ich arbeite derzeit an einem Programm, das eine alte Datenbank in einen neueren Stil konvertiert und eine der Aufgaben, die ich zugewiesen wurde, ist, einige alte binäre Spalten zu entfernen und diese in Dokumente in unserem Repository zu konvertieren..NET - Beginnen Sie mit dem Lesen von DataReader, bevor die Abfrage abgeschlossen ist?
Wir haben etwa 1,1 Millionen Zeilen in der Tabelle und mein Prozess dauert etwa 12 Stunden.
Ich bin auf der Suche nach Möglichkeiten, dies alles ein wenig schneller zu machen und eine Sache, die ich betrachte, ist es, die Daten schneller zu bekommen. Wenn es einen Weg gibt, kann ich zu den Ergebnissen meiner Abfrage gelangen, bevor es abgeschlossen ist? Ich habe bemerkt, dass ich, wenn ich eine "select *" - Anweisung für diese Tabelle in Query Analyzer ausführe, Ergebnisse sofort zurückerhalte, aber wenn ich ExecuteReader in .NET verwende, dauert diese Abfrage ungefähr 30 Minuten, bevor ich anfangen kann, die Zeilen zu lesen .
Wie sieht Ihr tatsächlicher Code aus? Es klingt, als ob Sie einige schwere Where-Abfragen für nicht indizierte Spalten haben. Eine einfache SELECT-Operation ohne Filterung sogar von mehreren Millionen Spalten sollte schnell sein, auch mit ExecuteReader. –
Vielleicht können Sie Ihre Anfrage in eine kleinere Anzahl von Zeilen aufteilen und ein paar Threads ausführen, um sie zu verarbeiten? – clyc
@Pauli - Das Problem ist nicht die Indizes so sehr wie die Menge der Daten. Ich habe es mit mehreren BLOB-Spalten zu tun. :( –