companies.fdb → companies → LIMIT / OFFSET

SQL · LIMIT / OFFSET · База данных компаний

LIMIT и OFFSET для выборки компаний

Таблица «companies» — 300 строк детерминированно сгенерированных данных. Показанный ниже LIMIT / OFFSET реально выполнен движком FileDB: 10 строк в результате, 1.8 мс на выполнение, полным сканом таблицы.

Структура таблицы companies

Поля и типы данных

ПолеТипNullableИндекс
idintнетда (PK)
namevarchar(80)нет
cityvarchar(80)нет
industryvarchar(80)нет
founded_yearint (1991–2023)нет
employees_countint (5–5000)нет
revenue_mlnrealнет
websitevarchar(80)нет
phonevarchar(80)нет
emailvarchar(80)нет
is_activebooleanнет
legal_formvarchar(80)нет
tax_idvarchar(80)нет
ratingrealнет
registered_datedateнет

Пример строк (8 из 300)

idnamecityindustryfounded_yearemployees_countrevenue_mlnwebsitephoneemailis_activelegal_formtax_idratingregistered_date
143Синтез-СтройЧелябинскЛогистика20125493986.21smartstroy.org+7 (936) 618-01-73user8608@example.comfalseООО545600312026-06-08
144ЗенитКонсалтЕкатеринбургФинансы200124038893.41novaprom.ru+7 (946) 942-71-52user1745@example.comfalseЗАО42340012.662026-02-22
145СтолицаДизайнКраснодарМедицина201138076685.88rusprom.biz+7 (962) 304-40-39user8035@example.comtrueООО91230041.262025-10-22
146Регион-ЛогистикИжевскМедицина199318003530.57bestline.ru+7 (974) 461-68-65user4287@example.comtrueООО41230121.602025-12-12
147Статус-МедиаИжевскСтроительство201218587027.55smartservis.org+7 (931) 982-99-82user2843@example.comfalseООО70340132.972026-01-30
148НордСтройВоронежРеклама19956771853.93techcorp.ru+7 (900) 247-80-24user2607@example.comtrueНКО71230024.432025-11-11
149ЛидерДизайнВолгоградСтроительство200414934537.51megagroup.com+7 (902) 749-60-81user1327@example.comfalseЗАО24560112.592025-12-12
150Вектор-МаркетУфаIT20053379668.83proplus.biz+7 (978) 650-89-43user6637@example.comtrueЗАО41230101.332026-05-23

SQL-запрос: LIMIT / OFFSET

Задача: показать одну страницу списка — классическая пагинация через LIMIT и OFFSET.

SELECT * FROM companies LIMIT 10 OFFSET 30;
SQL Playground · companies.fdbFileDB Engine
результат появится ниже

Результат выполнения

300строк в таблице
10строк в результате
1.8 мсвремя выполнения

В результате 10 строк из 300 (около 3%). Если бы условие возвращало почти всю таблицу, фильтр был бы бесполезен; ноль строк — повод проверить значения в данных, а не синтаксис.

Первые строки результата

idnamecityindustryfounded_yearemployees_countrevenue_mlnwebsitephoneemailis_activelegal_formtax_idratingregistered_date
126Прогресс-АгроСанкт-ПетербургРеклама202113034888.76megatrade.ru+7 (934) 028-82-70user6094@example.comfalseООО97890092.432025-11-29
127Мега-МаркетСаратовЛогистика201026925314.38ecostroy.biz+7 (939) 636-50-50user6883@example.comfalseАО35670252.042025-11-22
128НордОйлСанкт-ПетербургОбразование19996841049.87smartplus.com+7 (935) 534-07-73user7876@example.comtrueПАО53450301.042025-10-03
129РусМедиаЕкатеринбургПроизводство199516895413.46alfastroy.org+7 (944) 186-72-32user5358@example.comtrueАО37890142.162026-05-30
13МегаАгроВолгоградЛогистика19961846477.10megagroup.biz+7 (949) 437-50-61user1830@example.comfalseПАО47890052.212025-11-17

Показаны 5 из 10 строк результата.

Как читать этот запрос

LIMIT ограничивает число возвращаемых строк, OFFSET пропускает первые N — вместе они дают классическую постраничную выдачу. Важно: без ORDER BY пагинация нестабильна, строки могут «прыгать» между страницами.
Фактическое время: 1.83 мс. Для сравнения: тот же запрос через сетевой протокол добавил бы миллисекунды на сериализацию и round-trip — встраиваемый движок исполняет его in-process.

LIMIT / OFFSET в разных СУБД

СУБДСинтаксисОтличие
PostgreSQLLIMIT 10 OFFSET 20также поддерживает FETCH FIRST из стандарта
MySQLLIMIT 20, 10две формы: LIMIT offset, count и LIMIT count OFFSET offset
SQLiteLIMIT 10 OFFSET 20идентичный синтаксис
FileDBLIMIT 10 OFFSET 20как в PostgreSQL

Скачать структуру и данные

Файлы собираются из текущего датасета (seed v1): структура таблицы, 300 строк данных и этот запрос.

Похожие запросы

Вопросы и ответы

Почему пагинация через OFFSET медленная на глубоких страницах?

OFFSET заставляет движок прочитать и отбросить все пропускаемые строки. Для глубокой пагинации быстрее keyset-подход: WHERE id > последний_показанный ORDER BY id LIMIT n.

Обязателен ли ORDER BY при LIMIT?

Практически — да: без сортировки «первые 10 строк» — это случайные 10 строк, и на следующей странице возможны дубли и пропуски.

Что будет, если OFFSET больше числа строк?

Просто пустой результат, без ошибки — удобно для «конца ленты», но легко принять за баг.