[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как так?
kirik
Наткнулся тут на одну вакансию, возник вопрос..
Цитата
Понимающий, почему пагинацию лучше делать без использования OFFSET.

Я конечно понимаю, что пагинация без OFFSET это тру, но как она выглядит и что они имели ввиду? Кэш? Не совсем ясно.. Можете разъяснить кто-нибудь? smile.gif



Спустя 7 минут, 29 секунд (18.10.2009 - 23:08) sergeiss написал(а):
Наверное, имеется ввиду то, что было в обсуждении на форуме недели 2-3-4 тому назад.
Что быстрее начать отсчет с той позиции, которая была последняя при предыдущей выборке. Т.е. указать стартовую позицию через WHERE
SQL
select * from table where id>2345 limit 10

вместо
SQL
select * from table limit 10 offset 234

Спустя 4 минуты, 19 секунд (18.10.2009 - 23:12) glock18 написал(а):
Я тоже так понял. Только не представляю как можно сделать при этом пагинацию неубогой. Выбирать отдельно id для каждой страницы оттуда?

Вопрос кэширования - зависит от того, что за пагинация такая. Поиск - ну тогда придется кэшировать различные запросы. при этом вовсе не значит, что нагрузка будет меньше. обычный список? я бы лучше делал как гугл - слал бы в пень всех с оффсетом больше n. ибо кому хочется ковыряться в экскрементах, ищут их в другом месте...

Спустя 2 минуты, 26 секунд (18.10.2009 - 23:14) sergeiss написал(а):
Цитата (glock18 @ 19.10.2009 - 00:12)
Только не представляю как можно сделать при этом пагинацию неубогой. Выбирать отдельно id для каждой страницы оттуда?

А в чем будет ее убогость?

Спустя 2 минуты, 34 секунды (18.10.2009 - 23:17) glock18 написал(а):
sergeiss
ну ты представь как будешь ссылки формировать для страниц

ЗЫ: я мож чего не понимаю. тогда объясни, если это действительно решается не через "далеко" smile.gif

Спустя 21 минута, 58 секунд (18.10.2009 - 23:39) kirik написал(а):
Цитата (sergeiss @ 18.10.2009 - 15:08)
Т.е. указать стартовую позицию через WHERE

Если так, то ясно. Но действительно как заметил glock18 пагинация при этом получится очень ограниченной. Она будет работать только в том, случае если сортировка будет проводится по id. Иначе, если например сортировать по.. допустим по просмотрам статей, то id не будут идти по порядку, и where > n будет бесполезен.

Спустя 9 минут, 41 секунда (18.10.2009 - 23:49) Nikitian написал(а):
Есть вариант для наиболее частых выборок делать отдельное поле, где указывается номер страницы этого документа. Наиболее частые выборки - это список по времени, ну и выборки по категориям. Если документы будут удаляться, перемещаться, то зависит от частоты и интенсивности этих изменений. Если нечасто, то можно забить - пользователю пофег 10 или 8-12 документов на странице показывается, либо тупо перегенеривать ранним утром номера страниц. Если часто, то этот способ не катит.

Спустя 3 минуты, 43 секунды (18.10.2009 - 23:52) glock18 написал(а):
Nikitian
А что делать с нечастым выборками? забить нельзя ведь на них. юзать оффсет?

Спустя 5 минут, 42 секунды (18.10.2009 - 23:58) Nikitian написал(а):
Юзать оффсет и кэш. Паранойя по поводу оффсета из-за его медленной работы на больших значениях. Но если вам надо для 10 человек в день сделать через жопу выборку в полсекунды, то почему бы и нет? На то они и нечастые.

Спустя 55 секунд (18.10.2009 - 23:59) glock18 написал(а):
Понятно.

Спустя 2 минуты, 2 секунды (19.10.2009 - 00:01) kirik написал(а):
Ясно, извращения еще те smile.gif

Спустя 9 минут, 43 секунды (19.10.2009 - 00:11) glock18 написал(а):
Эт точно. рубил бы я все эти оффсеты на корню. особенно, если говорить о нечастых случаях... не нравится мне, когда такая вот проблема занимает больше времени, чем, скажем, разработка одного приличного модуля. а занять может, что ни говори - это лишь эмитация постранички, а значит может иметь свои недостатки, в том числе и не видимые сразу.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.