Всегда ли при выполнении оператора требуется память для набора результатов?

Коллега сказал мне, что выполнение оператора SQL всегда помещает данные в RAM / swap сервером базы данных. Таким образом, нецелесообразно выбирать большие наборы результатов.

Я думал, что такой код

my $sth = $dbh->prepare('SELECT million_rows FROM table');
while (my @data = $sth->fetchrow) {
    # process the row
}

извлекает набор результатов построчно, не загружая его в ОЗУ. Но я не могу найти упоминания об этом в документах DBI или MySQL. Как на самом деле создается и извлекается набор результатов? Работает ли это так же для простых выборок и объединений?

9
задан planetp 12 November 2010 в 16:37
поделиться