Смещение против номера страницы при разбивке на страницы - PullRequest
4 голосов
/ 22 ноября 2008

Это довольно тривиально, но на SO я заметил, что вместо смещения они используют номера страниц. Я знаю, что разница незначительна (умножьте номер страницы на строки на странице или разделите смещение на строки на странице), но мне интересно, рекомендуется ли одно из них над другим.

Некоторые сайты, такие как Google, конечно, используют более сложную систему, потому что им нужно отслеживать ваш реальный поиск. Но я думаю о простом сайте, где это не имеет значения.

Какая методика рекомендуется?

Ответы [ 3 ]

4 голосов
/ 28 февраля 2009

Смещения также полезны для оптимизации, когда результирующий набор разбит на страницы очень большой.

Это потому, что в некоторых случаях это позволяет вам сделать

WHERE my_sortorder >= (some offset)
LIMIT 10

, а не

LIMIT 10 OFFSET 880

, что менее эффективно. Индекс может позволить вам перейти прямо ко всем строкам, соответствующим my_sortoder> = с некоторым смещением , но когда вы используете OFFSET с LIMIT, он должен сначала найти и просмотреть все 880 предыдущих строк.

2 голосов
/ 21 августа 2017

Лучше всего использовать комбинацию limit и offset, потому что не требуется дополнительной математики для определения номера новой страницы, если вы измените свой лимит.

Например, при 20 объектах на странице, при условии, что страница 1 возвращает объекты с индексом 0 - 19, если вы находитесь на странице 2, то вам следует смотреть на объекты с индексом 20 - 39. Если я сейчас решу изменить мой предел до 10, наиболее распространенным поведением было бы отображение объектов с индексом 20 - 29.

Для выполнения вышеуказанного поведения потребуется пересчитать, на какой странице вы должны быть, используя новый лимит. Выше, если вы измените лимит на 10, но сохраняете номер страницы равным 2, тогда вы будете отображать объекты с индексом 10 - 19. Вам потребуется пересчитать номер страницы, чтобы он равнялся 3, чтобы объекты 20 - 29 было показано.

Мое мнение, конечно.

2 голосов
/ 22 ноября 2008

Использовать смещения. Если вы решите разрешить переменное (или определяемое пользователем) количество результатов на странице, кодирование будет простым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...