Eu uso paginação de cursor e quero exibir meus dados assim:
na parte inferior você pode ir para a página 1 até 29. Para calcular minhas páginas, tenho que contar todas as minhas linhas. Não é pesado toda vez contar todas as linhas? Talvez haja outra solução ou não consigo escapar dela para contar todas as linhas?
Eu também não uso deslocamento, então como posso fazer isso com paginação de cursor?
SELECT
wp.id,
wp.updated_wst,
u.id as user_id, u.firstname, u.lastname,
c.id as company_id, c.company,
wst.id as wst_id,
wst.start_time,
wst.end_time,
wst.send_start_at,
wst.send_end_at,
wst.accepted_by,
wst.accepted_at,
l.name as location
FROM workers_plan wp
LEFT JOIN users u
ON u.id = wp.user_id
LEFT JOIN clients c
ON c.id = u.company_id
LEFT JOIN workers_send_times wst
ON wst.workers_plan_id = wp.id
LEFT JOIN location_orders lo
ON lo.id = wp.location_orders_id
LEFT JOIN location l
ON l.id = lo.location_id
WHERE lo.id = $1 AND wp.tenant_id = $2 AND (wp.id, wp.updated_wst) > ($3, $4)
GROUP BY wp.id, wst.id, u.id, c.id, l.name
ORDER BY wp.id, wp.updated_wst LIMIT 50
Esse é meu código atual. Mas para exibir páginas, tenho que contar linhas e então calculá-las. Como eu faria isso (a melhor maneira de desempenho)?