-
Notifications
You must be signed in to change notification settings - Fork 9
sql_select_all_cnt
do- edited this page Jan 21, 2018
·
2 revisions
Исполняет оператор SQL с заданными аргументами и возвращает выборку (список хэшей) плюс количество записей в том же запросе без выражения LIMIT.
Стоит иметь в виду, что при использовании этой процедуры сервер БД, хоть и выдаёт ограниченный результат, но сканирует выборку полностью. Так что бывает гораздо эффективнее достать ту же выборку при помощи sql_select_all, а полное количество строк вычислить отдельным запросом (вызов sql_select_scalar), поскольку при этом не нужна сортировка и можно обойтись без лишних JOIN'ов, а то и вообще вычислить результат, не заглядывая в таблицу: по одному индексу.
...
($item -> {docs}, $item -> {cnt}) = sql_select_all (<<EOS, @params, {fake => 'docs'});
SELECT
*
FROM
docs
WHERE
1=1
$filter
ORDER BY
...
LIMIT
...
EOS