Dit is waarschijnlijk bedoeld om paginering mogelijk te maken. Het kan erg duur zijn om het totale aantal rijen weer te geven.
Een manier die ik heb gevonden om goed te werken op een verscheidenheid aan databases is om het werk in twee delen te splitsen. Eerst verzamelt u de ID van de relevante rijen in een tijdelijke tabel. Ten tweede bevraagt u de volledige dataset. De gegevens die in het eerste deel zijn verzameld, bieden u een eenvoudige manier om het totale aantal rijen en de ID's van rijen op een bepaalde pagina te berekenen.
Hier is een ruw voorbeeld voor SQL Server. Merk op dat het voorbeeld niet afhankelijk is van vensterfuncties zoals row_number()
, die niet beschikbaar zijn in 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
Trouwens, indien mogelijk, zou ik deze eis teruggeven aan de ontwerpers om te controleren of dit de moeite waard is om er veel tijd aan te besteden. Het is veel eenvoudiger als u niet het totale aantal rijen hoeft weer te geven.