Това вероятно има за цел да позволи пагиниране. Показването на общия брой редове може да бъде наистина скъпо.
Един начин, който открих за добра работа с различни бази данни, е да разделя работата на две части. Първо събирате идентификатора на съответните редове във временна таблица. Второ, правите заявка за пълния набор от данни. Данните, събрани в първата част, ви дават лесен начин да изчислите общия брой редове и идентификаторите на редове на определена страница.
Ето един груб пример за SQL Server. Имайте предвид, че примерът не разчита на прозоречни функции като row_number()
, които не са налични в 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
Между другото, ако е осъществимо, бих върнал това изискване на дизайнерите, за да проверят отново дали си струва да отделите много време. Много по-лесно е, ако не е необходимо да показвате общия брой редове.