Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PERL&Oracle) как узнать сколько записей вернул запрос SELECT / 10 сообщений из 10, страница 1 из 1
15.09.2005, 17:14
    #33271920
Fen1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Как в perl узнать сколько записей вернул запрос SELECT ($sth->execute;). Используется oracle и DBI.
...
Рейтинг: 0 / 0
16.09.2005, 09:49
    #33272638
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Код: plaintext
1.
my $count=$dbh->selectrow_array("SELECT count(*) FROM table");
...
Рейтинг: 0 / 0
16.09.2005, 10:45
    #33272848
Fen1
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Понятно, значит после выполнение sth->execute нигде не содержится сколько всего записей. Узнавать это кол-во или дополнительным запросом или написать функцию для подсчёта perl-ом.
...
Рейтинг: 0 / 0
16.09.2005, 10:47
    #33272861
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
совершенно верно, в Oracle так и есть...
...
Рейтинг: 0 / 0
16.09.2005, 12:00
    #33273157
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Fen1Понятно, значит после выполнение sth->execute нигде не содержится сколько всего записей. Узнавать это кол-во или дополнительным запросом или написать функцию для подсчёта perl-ом.

странно, вообще если ты делаеш селект, то логично былоб предположить что возвращаемые данные ты таки куда то начитываеш, а размер того куда ты это
зачитал в перле узнать не проблемма....

Тоесть узнать размер массива в перле не составит труда ( это если fetchall_arrayref делать ), другое дело что данных возвращаемых запросом может быть несколько больше чем памяти, в этом случае додсчет в цикле ( fetchrow_arrayref или чегото подобного возвращающего по односй строке ) строк должен спасти отца русской демократии, в обоих случаях чтобы узнать количество отданных данных эти данные надо пропустить через перловый скрипт.

Делать отдельный запрос к БД для подсчета строк несколько не корректно по причине того что во первых это некоторый оверхеад, а во вторых ни кто н гарантирует что результат будет таким же ( если конечно не лочить таблици и пр... )
...
Рейтинг: 0 / 0
16.09.2005, 12:08
    #33273201
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Пройдитесь поиском по форуме Oracle, это тема не раз обсуждалась.

автор
во первых это некоторый оверхеад

по какой причине?? count(*) возращает результат мгновенно, хоть по 1 милиону записей запрос, т.к. count(*) не возращает никакие данные из таблицы.

автор
а во вторых ни кто н гарантирует что результат будет таким же

об этом автор не спрашивал ...
...
Рейтинг: 0 / 0
16.09.2005, 12:16
    #33273230
nik2
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Николай aka MotodorПройдитесь поиском по форуме Oracle, это тема не раз обсуждалась.

автор
во первых это некоторый оверхеад

по какой причине?? count(*) возращает результат мгновенно, хоть по 1 милиону записей запрос, т.к. count(*) не возращает никакие данные из таблицы.



данных может и не возвращает но данные таки читает, а скорость скорее всего обусловленна тем что кеши работают хорошо, тоесть по сути

select * from table и потом следом select count(*) from table просто пробежится по закешированным данным отсюда и `мгновенность`
...
Рейтинг: 0 / 0
16.09.2005, 13:06
    #33273392
Black
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
авторselect * from table и потом следом select count(*) from table просто пробежится по закешированным данным отсюда и `мгновенность
попробуйте выполнить count(*) до и после выполнения селекта, результат будет один... принцип работы count(*) другой ...
...
Рейтинг: 0 / 0
16.09.2005, 19:46
    #33274570
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Думаю, и в Оракле count(*) считается по первичному ключу таблицы.
...
Рейтинг: 0 / 0
16.09.2005, 19:46
    #33274571
DocAl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
(PERL&Oracle) как узнать сколько записей вернул запрос SELECT
Точнее не обязательно по первичному -- по тому, который оптимизатор сочтёт предпочтительней.
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PERL&Oracle) как узнать сколько записей вернул запрос SELECT / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]