Oracle Developer👨🏻‍💻
3.22K subscribers
610 photos
68 videos
2 files
488 links
🔝 канал о разработке в СУБД Oracle:
SQL, PL/SQL, оптимизация, архитектура и многое другое...

Backend-pro.ru - обучение по различным программам, связанных с backend-разработкой для ФЛ и ЮЛ.

Отец-основатель: @denis_dbd Кивилёв Денис
Download Telegram
Способы получения Top-N записей (пагинация)

Существует три способа работать с пагинацией на уровне SQL. Допустим нам надо получить строки с 10 по 20.

Способ 1. Rownum + order by
select *
from (select rownum rn,
a.*
from (select *
from employees e
order by e.hire_date) a
where rownum < 20)
where rn >= 10;

Способ 2. Аналитическая функция row_number
select *
from (select row_number() over(order by t.hire_date) rn,
t.*
from employees t
order by t.hire_date) a
where a.rn between 10 and 19;

Способ 3. Использование расширения SQL (c Oracle 12c).
select t.*
from employees t
order by hire_date
offset 9 rows fetch next 10 rows only;

По скорости примерно одинаковы. Как-нибудь, запилю видюшку с демонстрацией.

#sql #пагинация #rowcount #аналитическиефункции #offset
👍3