Sql select all cnt
Материал из Eludia.
Описание
Исполняет оператор SQL с заданными аргументами и возвращает выборку (список хэшей) плюс количество записей в том же запросе без выражения LIMIT.
Предупреждение
Стоит иметь в виду, что при использовании этой процедуры MySQL, хоть и выдаёт ограниченный результат, но на сервере сканирует выборку полностью. Так что бывает гораздо эффективнее достать ту же выборку при помощи sql_select_all, а полное количество строк вычислить отдельным запросом (вызов sql_select_scalar), поскольку при этом не нужна сортировка и можно обойтись без лишних JOIN'ов, а то и вообще вычислить результат, не заглядывая в таблицу: по одному индексу.
| Это одна из многочисленных функций API Eludia.pm для работы с БД. Как правило, её результат может быть получен с использованием процедуры sql. При этом объём программного кода сокращается, иногда — в несколько раз. |
Синопсис (Perl 5)
my $filter = ;
my @params = ();
...
($item -> {docs}, $item -> {cnt}) = sql_select_all (<<EOS, @params, {fake => 'docs'});
SELECT
*
FROM
docs
WHERE
1=1
$filter
ORDER BY
...
LIMIT
...
EOS
| На этой странице упоминается Eludia.php: порт Eludia.pm на PHP. Данный проект был доведён до рабочей бета-версии, однако впоследствии заморожен и в настоящее время не поддерживается. |
Синопсис (PHP)
$filter = ; $params = array (); ... list ($item [docs], $item [cnt]) = sql_select_all_cnt (<<<EOS SELECT * FROM docs WHERE 1=1 $filter ORDER BY ... LIMIT ... EOS, $params, array (fake => 'docs'));


