S
SQL: Реляционные базы данных
@relational_databases1.0K подп.
1.2Kпросмотров
17 сентября 2025 г.
📷 ФотоScore: 1.4K
📥 Гайд по LIMIT и OFFSET Когда вы работаете с большими таблицами, часто не нужны все строки сразу. Например, вы хотите: ➖ показать топ-10 самых дорогих товаров, ➖ вывести последние 20 заказов, ➖ сделать постраничную навигацию в приложении. ➖ вам просто лень писать фильтры, ведь для анализа/оценки хватит n-строк таблицы. НО учтите что будет полное сканирование таблицы! Для этого в SQL есть два оператора (точнее clauses): LIMIT и OFFSET. 📥 LIMIT — сколько строк выбрать. LIMIT ограничивает количество строк, которое вернёт запрос. Пример: SELECT FROM products ORDER BY price DESC LIMIT 5; -- берём только 5 самых дорогих товаров Что происходит: ➖ ORDER BY price DESC — сортируем товары по убыванию цены. ➖ LIMIT 5 — берём только первые 5 строк после сортировки. 📥 Советы: ➖ Без ORDER BY LIMIT вернёт произвольные строки — на больших таблицах результат может быть сомнительным. ➖ LIMIT экономит ресурсы: не нужно считывать все данные, когда вам нужны только несколько строк. 📥 OFFSET — с какой строки начать. OFFSET пропускает указанное количество строк перед выборкой. Пример: SELECT FROM products ORDER BY price DESC LIMIT 5 OFFSET 5; -- берём строки с 6 по 10 Что происходит: ➖ Сортируем товары по цене (ORDER BY price DESC). ➖ Пропускаем первые 5 строк (OFFSET 5). ➖ Берём следующие 5 строк (LIMIT 5). 🪙 Практическое применение: пагинация LIMIT + OFFSET идеально подходят для страниц сайта или приложения (бэк UI), но можно юзать и при подготовке отчетности, если ложиться в условия ее формирования. -- Страница 1 SELECT FROM orders ORDER BY order_date DESC LIMIT 20 OFFSET 0; -- Страница 2 SELECT FROM orders ORDER BY order_date DESC LIMIT 20 OFFSET 20; -- Страница 3 SELECT FROM orders ORDER BY order_date DESC LIMIT 20 OFFSET 40; Каждый раз вы берёте новую порцию данных без лишней нагрузки на базу. 🪙 Стоит упомянуть: Случайные строки с LIMIT. Чтобы взять случайные строки из таблицы: SELECT FROM users ORDER BY RANDOM() -- в разных СУБД отличается LIMIT 5; LIMIT в подзапросах. Можно использовать LIMIT для выборки топ-N в подзапросах: SELECT * FROM users WHERE id IN ( SELECT id FROM users ORDER BY created_at DESC LIMIT 10 ); Всегда используйте ORDER BY с LIMIT. Иначе “первые N” строки могут быть случайными. 🪙 Итог LIMIT n — Берёт первые n строк OFFSET m — Пропускает первые m строк LIMIT n OFFSET m — Берёт n строк, пропустив первые m Запомните: LIMIT — сколько строк грузить, OFFSET — с какой строки грузить. #SQL #LIMIT #OFFSET 📱 Подписаться на канал 💻 Курс автора по SQL DDL 🌎 Мой ИТ-стартап
1.2K
просмотров
2567
символов
Нет
эмодзи
Да
медиа

Другие посты @relational_databases

Все посты канала →
📥 Гайд по LIMIT и OFFSET Когда вы работаете с большими табл — @relational_databases | PostSniper