Sql select all cnt

Материал из Eludia
Перейти к: навигация, поиск

Описание

Исполняет оператор SQL с заданными аргументами и возвращает выборку (список хэшей) плюс количество записей в том же запросе без выражения LIMIT.

Предупреждение

Стоит иметь в виду, что при использовании этой процедуры MySQL, хоть и выдаёт ограниченный результат, но на сервере сканирует выборку полностью. Так что бывает гораздо эффективнее достать ту же выборку при помощи sql_select_all, а полное количество строк вычислить отдельным запросом (вызов sql_select_scalar), поскольку при этом не нужна сортировка и можно обойтись без лишних JOIN'ов, а то и вообще вычислить результат, не заглядывая в таблицу: по одному индексу.

Sql.jpg Это одна из многочисленных функций 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
Php.jpg На этой странице упоминается 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'));
Персональные инструменты
Пространства имён

Варианты
Действия
Навигация
Разработчику
Администратору
Инструменты