Dies soll wahrscheinlich das Paginieren ermöglichen. Das Anzeigen der Gesamtzahl der Zeilen kann sehr teuer werden.
Eine Möglichkeit, die meiner Meinung nach bei einer Vielzahl von Datenbanken gut funktioniert, besteht darin, die Arbeit in zwei Teile aufzuteilen. Zunächst sammelt man die ID der relevanten Zeilen in einer temporären Tabelle. Zweitens fragen Sie den vollständigen Datensatz ab. Die im ersten Teil gesammelten Daten bieten Ihnen eine einfache Möglichkeit, die Gesamtzahl der Zeilen und die IDs der Zeilen auf einer bestimmten Seite zu berechnen.
Hier ist ein grobes Beispiel für SQL Server. Beachten Sie, dass das Beispiel nicht auf Fensterfunktionen wie row_number()
angewiesen ist , die in MySQL nicht verfügbar sind.
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
Übrigens, wenn möglich, würde ich diese Anforderung an die Designer zurückgeben, um zu überprüfen, ob es sich lohnt, viel Zeit dafür aufzuwenden. Es ist viel einfacher, wenn Sie nicht die Gesamtzahl der Zeilen anzeigen müssen.