Forum Webscript.Ru
Общие => Базы данных => Тема начата: NetHead от 21 Марта 2004, 12:47:38
-
Если использовать метод fetchall_arrayref, то много будет расходоваться памяти? Стоит ли использовать под mod_perl?
-
NetHead
Данный метод "жрет" памяти столько, сколько данных ты выбираешь...
Не выбирай запросом лишнего, и памяти будет тратится мало, на то и прибуманы Базы Данных...
-
Это понятно, дело в другом. Есть необходимость выбирать данные не просто построчно в цикле, а знать что будет в следующей строке. Вот сдесь и встает выбор пользоваться fetchall_arrayref или другими путями. А вибираться будет не более 100 строк по 8 полей, но с VARCHAR\'ами и TEXT\'ом.
-
Ну и кто мешает сделать получить две строки если это требуется?
-
Если выбирать в цикле эти 2 строки, и выбирать например методом fetchrow_arrayref... вообщем как лучше организовать этот цикл? Может накидаешь маленький кусочек кода на perl?
-
my $row1 = $sth -> fetchrow_arrayref();
my $row2;
while ($row2 = $sth -> fetchrow_arrayref()) {
# $row2 - следующая строка
# $row1 - текущая строка
# обрабатываешь свои записи
$row1 = $row2;
}
# обработка последней записи...
только я сомневаюсь, что $sth при этом не будет съедать память...
IMHO тогда лучше циклом выполнять запросы...
А вообще лучше подумать о втором запросе который будет выбирать только то, что тебе требуется выбирать из следующих записей...
-
Я так пробовал делать, только глюк получился какой-то. Я и выбирал между этими способами: fetchall и тот который написал Phoinix. Какой рациональнее использовать?
-
NetHead
Phoinix
только я сомневаюсь, что $sth при этом не будет съедать память...
!!!
$sth = $dbh -> prepare($sql); $sth -> execute();
$sth - результат запроса! Сколько он будет занимать памяти, если ты не изменишь запрос?
Phoinix
А вообще лучше подумать о втором запросе который будет выбирать только то, что тебе требуется выбирать из следующих записей...
NetHead
Я так пробовал делать, только глюк получился какой-то.
Что такое глюк? В программировании есть только ошибки, которые надо исправлять!
-
Что такое глюк?
А глюк это:
my $row1 = $sth -> fetchrow_arrayref();
my $row2;
while ($row1->
$row2 = $sth -> fetchrow_arrayref();
# в этом месте $row2 выбрал ту же строку, что и $row1
$row1 = $row2;
}