LIMITи OFFSETпозволит вам получить только часть строк, сгенерированных остальной частью запроса

SELECT select_list
    FROM table_expression
    [ ORDER BY ... ]
    [ LIMIT { number | ALL } ] [ OFFSET number ]

Если указано предельное количество строк, будет возвращено не более этого количества строк (но возможно меньше, если сам запрос выдает меньше строк). LIMIT ALLэто то же самое, что опустить LIMITпредложение, как и LIMITс аргументом NULL.

OFFSETговорит пропустить столько строк, прежде чем начать возвращать строки. OFFSET 0это то же самое, что опустить OFFSETпредложение, как и OFFSETс аргументом NULL.

Если появляются оба OFFSETи , то строки пропускаются до начала подсчета возвращаемых строк.LIMITOFFSETLIMIT

При использовании LIMITважно использовать ORDER BYпредложение, которое ограничивает строки результатов уникальным порядком. В противном случае вы получите непредсказуемое подмножество строк запроса. Вы можете просить ряды с десятого по двадцатый, но в каком порядке с десятого по двадцатый? Порядок неизвестен, если вы не указали ORDER BY.

Оптимизатор запросов LIMITучитывает это при создании планов запросов, поэтому вы, скорее всего, получите разные планы (с разным порядком строк) в зависимости от того, что вы даете для LIMITи OFFSET. Таким образом, использование разных значений LIMIT/ OFFSETдля выбора разных подмножеств результата запроса приведет к противоречивым результатам , если только вы не настроите предсказуемый порядок результатов с помощью ORDER BY. Это не ошибка; это неотъемлемое следствие того факта, что SQL не обещает выдавать результаты запроса в каком-либо конкретном порядке, если только ORDER BYон не используется для ограничения порядка.

Строки, пропущенные OFFSETпредложением, все равно должны быть вычислены внутри сервера; поэтому большой OFFSETможет быть неэффективным.