|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
По следам темы https://www.sql.ru/forum/1177437/medlennyy-count-offset-tablica-ne-pomeshhaetsya-v-ram У меня очень тупит пагинация (которая работает через offset) С удивлением отмечаю, что на этом форуме промотка к любым страницам темы осуществляется моментально Например вот эта тема из трёпа https://www.sql.ru/forum/614262-2548/kritika-i-predlozheniya-k-moderatoram-razdela Судя по сообщениям внизу на это уходит всего лишь 9-30 мс Generated in 34ms. [9ms] Не поделитесь секретом, за счёт чего тут пагинация так быстро работает? Благодарю. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2015, 21:46 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Конкретно за этот форум не скажу, но вообще можно, например, присваивать всем постам в конкретной теме порядковый номер в отдельном поле и для нужной страницы делать выборку по диапазону номеров. Конечно, при удалении постов индексы в пределах поста придется перенумеровывать, но удаление бывает редко. Такой метод хорошо работает, когда используется только один вид сортировки. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2015, 22:24 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Спасибо, наверное, это и правда самый быстрый способ. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.09.2015, 23:17 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Zim-a, У меня стандадтный пейджинейтор PagedList.MVC на ASP.NET+MSSQL и 25000 страниц работает мгновенно. Секрет в том что offset и limit вычисляется на клиенте при фетче, а запрос серверу отсылается один и тот-же. Тем более, что в MSSQL такой синтаксис, как у PG вообще не поддерживается. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 01:05 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Zim-a > Не поделитесь vсекретом Не растекаясь мыслью по древу, в грубом приближении лично я бы вообще на всё плюнул и показывал по "pagenumber = messageid div N". А уж потом (по жалобам и насущной необходимости) менял алгоритм. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 03:15 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам, У топикастера в приведенных запросах вообще "id" нету, если заметили:) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 03:48 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Relic Hunter Zim-a, У меня стандадтный пейджинейтор PagedList.MVC на ASP.NET+MSSQL и 25000 страниц работает мгновенно. Секрет в том что offset и limit вычисляется на клиенте при фетче, а запрос серверу отсылается один и тот-же. Тем более, что в MSSQL такой синтаксис, как у PG вообще не поддерживается. Не могли бы пояснить? Если у вас 25 000 страниц и на каждой например по 10 записей - это 250 000 записей. Не грузится же 250 тысяч записей на клиент? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 10:39 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Zim-a > Не поделитесь vсекретом Не растекаясь мыслью по древу, в грубом приближении лично я бы вообще на всё плюнул и показывал по "pagenumber = messageid div N". А уж потом (по жалобам и насущной необходимости) менял алгоритм. Обычно в таблице постов есть id темы. Т.е. надо выбирать с учётом id темы. Кроме того, у меня например нумерация не с 1 начинается (я экспериментировал и несколько первых сотен тысяч постов удалил) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 10:41 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Zim-a У меня очень тупит пагинация Zim-a что на этом форуме ... моментально ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 11:49 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Zim-a Я с ASP.NET не знаком, и немного не понял. Не могли бы пояснить? Если у вас 25 000 страниц и на каждой например по 10 записей - это 250 000 записей. Не грузится же 250 тысяч записей на клиент? Код: C# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 18:34 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Т.е. в MSSQL SKIP работает быстро? Это аналог OFFSET в POSTRESQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 18:44 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Zim-a Т.е. в MSSQL SKIP работает быстро? Это аналог OFFSET в POSTRESQL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 18:52 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Zim-a Т.е. в MSSQL SKIP работает быстро? Это аналог OFFSET в POSTRESQL? Код: C# 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 18:59 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Relic Hunter Skip и Таке делается в клиентском курсоре. Открыли курсор, начали делать фэтч с ПЕРВОЙ ЗАПИСИ, пропустили Skip(1000500 записей) нужное количество, с этого места загружаем их в коллекцию Take(10 записей), закрываем курсор, отдаем десять записией клиенту. Что не так? это тихий ужас и такое советовать другим нельзя. Надеюсь, что Вы просто оговорились. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 19:15 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Надо яснее выражаться. Ибо в такой формулировке это тихий ужас и такое советовать другим нельзя. Надеюсь, что Вы просто оговорились. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 19:19 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Пагинация на форуме реализована вовсе не таким образом. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 19:49 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Пагинация на форуме реализована вовсе не таким образом. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 20:08 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Relic Hunter> как у людей. Как раз то, что ты описываешь - неправильно. А сколько людей пошли таким путём - ХЗ, ССЗБ. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.10.2015, 20:36 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Relic Hunter, судя по всему у меня подобная реализация. SKIP (он же OFFSET) работает тем медленнее чем больше его значение. И это есть проблема. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.10.2015, 16:08 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Не растекаясь мыслью по древу, в грубом приближении лично я бы вообще на всё плюнул и показывал по "pagenumber = messageid div N". А уж потом (по жалобам и насущной необходимости) менял алгоритм. Или имеется в виду вариант miksoft. По моему, тут сделано именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2015, 00:40 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
alexeyvg> Такой способ вообще не работает, потому что alexeyvg> messageid - сквозной, не в пределах топика. alexeyvg> Или имеется в виду вариант miksoft. Нет, я не имел в виду в отдельном поле хранить, даже не из-за возни с дырками при удалениях. Я имел в виду тот RowNum(), который умеет СУБД. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2015, 01:03 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Впрочем, miksoft тоже нечто похожее описывает, называя это диапазоном. Но с отдельным полем. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2015, 01:05 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Relic Hunter Zim-a, У меня стандадтный пейджинейтор PagedList.MVC на ASP.NET+MSSQL и 25000 страниц работает мгновенно. Секрет в том что offset и limit вычисляется на клиенте при фетче, а запрос серверу отсылается один и тот-же. Тем более, что в MSSQL такой синтаксис, как у PG вообще не поддерживается. Это нерабочий способ, на сервере или клиенте перебирать записи, как бы это красиво не называлось, и в какой бы синтаксис не рядилось (кстати, сиквел в новых версиях поддерживает ту же функциональность, что и PG, если вы про OFFSET ... LIMIT ... - только это не поможет, это всего лишь один из синтаксис того же самого - пронумеровать записи в массиве и взять нужные) ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2015, 01:17 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Я имел в виду тот RowNum(), который умеет СУБД. Но RowNum() - это нумерация массива, это медленно. Для начала я бы так и сделал, да, потому что это самое простое. Но ТС пишет про "тупит пажинация", так что ему нужно уже что то нормальное... ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2015, 01:20 |
|
Как реализована пагинация на форуме?
|
|||
---|---|---|---|
#18+
Гаджимурадов Рустам Но с отдельным полем. Единственный недостаток - не подходит для гибких фильтраций и сортировок... Максимум- можно хранить несколько таких полей для разных сортировок. Вот поэтому тут не делают всякие пожелания типа "не показывать сообщения какого то автора" и т.п. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.10.2015, 01:24 |
|
|
start [/forum/topic.php?fid=8&fpage=9&tid=1177901]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
406ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
others: | 239ms |
total: | 753ms |
0 / 0 |