To má pravděpodobně umožnit stránkování. Zobrazení celkového počtu řádků může být opravdu drahé.
Jedním ze způsobů, který jsem zjistil, že dobře funguje na různých databázích, je rozdělit práci na dvě části. Nejprve shromáždíte ID příslušných řádků v dočasné tabulce. Za druhé, dotazujete se na celou datovou sadu. Údaje shromážděné v první části vám poskytují snadný způsob, jak vypočítat celkový počet řádků a ID řádků na určité stránce.
Zde je hrubý příklad pro SQL Server. Všimněte si, že příklad nespoléhá na funkce okna jako row_number()
, které nejsou dostupné v MySQL.
create table #id_list (rn int identity, pk int);
insert #id_list
(pk)
select customer_id
from customers
where name like '%Joe%';
select (select count(*) from #id_list) as total_rows
, rn -- The row's number
, name
, birth_date
, ... -- Other columns
from #id_list id
join customer c
on c.pk = c.customer_id
where rn between 15 and 29; -- Second 15-row page
Mimochodem, pokud to bude možné, vrátil bych tento požadavek konstruktérům, aby si znovu ověřili, zda se tomu vyplatí věnovat hodně času. Je to mnohem jednodušší, pokud nepotřebujete zobrazovat celkový počet řádků.