Ich wurde von einem Kollegen gesagt, dass das Ausführen einer SQL-Anweisung die Daten immer vom Datenbankserver in den RAM/Swap versetzt. Daher ist es nicht praktisch, große Ergebnismengen auszuwählen.Wird beim Ausführen einer Anweisung immer Speicher für die Ergebnismenge benötigt?
dachte ich, dass ein solcher Code
my $sth = $dbh->prepare('SELECT million_rows FROM table');
while (my @data = $sth->fetchrow) {
# process the row
}
die Ergebnismenge zeilen abruft, ohne sie RAM geladen zu werden. Aber ich kann keinen Hinweis darauf in DBI oder MySQL-Dokumenten finden. Wie wird das Ergebnis wirklich erstellt und abgerufen? Funktioniert es für einfache Selects und Joins?
Frage nach dem Zweck, warum müssen Sie Millionen Zeilen von Datensatz abrufen und alle abrufen? "mysqldump" sollte passender sein – ajreal
@ajreal: Ich muss alle Zeilen in der Reihenfolge der Einfügung verarbeiten und einige Berichte generieren. – planetp
ok, ist es vernünftig das zu tun? Mysql-Funktion verwenden, um Ansicht zu generieren, temporäre Tabelle nicht ausreichend für Bericht? oder erwägen Sie sogar, die BIG-Ergebnisse in eine Datei zu dumpen und öffnen Sie die Datei für die Verarbeitung – ajreal