|
пагинация
|
|||
---|---|---|---|
#18+
есть 5 таблиц с миллионами записей и надо свести их вместе + сделать тяжёлый фильтр А потом, чтобы показать кол-во страниц, надо посчитать кол-во строк после этого сложного фильтра... ...которых там могут быть миллионы Конечно легко взять одну таблицу и вытащить из неё кол-во, а потом поделить на размер страницы. А вот как после фильтра быстро высчитать кол-во? пагинация в этом случае вообще уместна, или просто показать первые 10 страниц (если они там есть) и кнопку "показать ещё"? ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 22:35 |
|
пагинация
|
|||
---|---|---|---|
#18+
tip78, Я в таких случаях, обычно, ставлю LIMIT 1001. Если CTE с LIMIT 1001 вернуло больше 1000 записей, то явно пишу, что так как при указанных фильтрах количество записей свыше 1000, то будут отображаться только первые 1000. Если же действительно есть в наличии дятел, способный кликать по страницам 100 тысяч раз, то количество записей считается в том же запросе отдельным CTE. ... |
|||
:
Нравится:
Не нравится:
|
|||
03.01.2021, 22:44 |
|
пагинация
|
|||
---|---|---|---|
#18+
tip78, авторпагинация в этом случае вообще уместна, или просто показать первые 10 страниц (если они там есть) и кнопку "показать ещё"? Не уместна... вообще пагинацию через offset больше чем на первые 10-20-30 страниц делать не стоит (она не будет эффективно работать а потом придет какой то гугл и пройдет вам всю базу через limit/offset и сделает вам больно). Запросы с OFFSET линейно замедляются от размера offset поэтому offset например миллион работать быстро не будет ни при каких условиях. авторили просто показать первые 10 страниц (если они там есть) и кнопку "показать ещё"? показать первые 10 страниц а дальше предлагать уточнить фильтр... (например по дате или еще как то)... точно нельзя давать через показать еще перебирать миллионы строк (почему см выше). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 10:06 |
|
пагинация
|
|||
---|---|---|---|
#18+
ну значит всё правильно делаю всем спасибо ) ... |
|||
:
Нравится:
Не нравится:
|
|||
04.01.2021, 12:03 |
|
пагинация
|
|||
---|---|---|---|
#18+
Пару лет назад здесь же задавался аналогичным вопросом. У меня были пользователи, которые периодически хотели получать N-многотысячную страницу. Решение подсмотрел тут ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 12:12 |
|
пагинация
|
|||
---|---|---|---|
#18+
Самое простое решение это использовать CSS для форматирования. Тогда собственно данные, даже если их миллион, будут компактны и прилетят быстро. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 14:35 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Самое простое решение это использовать CSS для форматирования. Тогда собственно данные, даже если их миллион, будут компактны и прилетят быстро. Поясните идею, пожалуйста. Не может же CSS волшебным образом ускорить работу OFFSET на PostgreSQL? А здесь обсуждается именно скорость выборки только заданной части строк тяжелого запроса. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 14:44 |
|
пагинация
|
|||
---|---|---|---|
#18+
alex1610 Пару лет назад здесь же задавался аналогичным вопросом. У меня были пользователи, которые периодически хотели получать N-многотысячную страницу. Решение подсмотрел тут это ломает индексацию поисковикам и возможность адресации конкретных страниц (и вообще бесконечный скролл нравится сильно не всем, лично я его искренне ненавижу)... а вот та же идея с next/prev ссылками - в принципе вполне рабочая (хотя конечно с индексацией там все равно грустно). -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 21:52 |
|
пагинация
|
|||
---|---|---|---|
#18+
Maxim Boguk, Да, со всем согласен. Бездумно так делать везде не надо. Но в некоторых узких кейсах можно использовать и такой подход. Особенно если есть автоматизированные клиенты. Все зависит от задачи и требований. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.01.2021, 23:54 |
|
пагинация
|
|||
---|---|---|---|
#18+
к бесконечному скроллу положен фильтр ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 00:12 |
|
пагинация
|
|||
---|---|---|---|
#18+
tip78 к бесконечному скроллу положен фильтр Ты выше пишешь, что у тебя уже после фильтрации миллионы записей. Поэтому я тебе предложил альтернативный быстрый вариант организации пагинации. Насколько это ui/ux - другой вопрос. Я же не знаю твоей задачи. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 01:01 |
|
пагинация
|
|||
---|---|---|---|
#18+
ptr128 Не может же CSS волшебным образом ускорить работу OFFSET на PostgreSQL? Может. Нет OFFSET в запросе - нет проблемы с его производительностью. Выборка отдаётся сразу вся, поскольку даже с миллионом записей она будет компактнее, чем пагинация с оформлением. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 14:34 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, А! Ну на такое некоторые разработчики действительно способны. Сам сколько раз возвращал такие перлы после code review на переделку. Но какое отношение тупость некоторых разработчиков, приводящая к излишней нагрузке на СУБД или даже к падению веб-сервера из-за нехватки памяти, имеет к обсуждаемому вопросу? ... |
|||
:
Нравится:
Не нравится:
|
|||
08.01.2021, 14:43 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov ptr128 Не может же CSS волшебным образом ускорить работу OFFSET на PostgreSQL? Может. Нет OFFSET в запросе - нет проблемы с его производительностью. Выборка отдаётся сразу вся, поскольку даже с миллионом записей она будет компактнее, чем пагинация с оформлением. при средней длине строки в 100 байт - это 100мб, на минуточку... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 00:02 |
|
пагинация
|
|||
---|---|---|---|
#18+
кстати, а как вообще работают GRID или как их там, когда JS фильтрует таблицу? откуда у JS данные на всю таблицу? Там их могут быть миллиарды строк... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 00:04 |
|
пагинация
|
|||
---|---|---|---|
#18+
tip78, На чистом js почти никто сейчас не пишет. В эру фреймворков все используют готовые компоненты. В частности, в гриде указывают источник данных и они, соответственно, подтягиваются с бэка. Могут тянуться сразу все, могут стримом. Также в гриде есть настройки и, как правило, нормальные люди ограничивают размер данных, который может придти. Соответственно, чем больше записей, тем медленнее рендерит и больше памяти жрет браузер. Если выйдет за лимиты, фронт просто упадет. Алгоритмы сортировки в разных компонентах разные. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 00:25 |
|
пагинация
|
|||
---|---|---|---|
#18+
+ сортировать можно на бэке. Компонент может как перезапрашивать новые данные с бэка, так и сортировать самостоятельно. Это все настраивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 00:28 |
|
пагинация
|
|||
---|---|---|---|
#18+
да с беком то вопросов нет, с беком не интересно сам JS как-то слишком быстро их крутит туда-сюда как-будто БЕЗ бека ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 10:14 |
|
пагинация
|
|||
---|---|---|---|
#18+
tip78 при средней длине строки в 100 байт - это 100мб, на минуточку... Вот именно: на современных скоростях сети это скачается меньше чем за минуточку, которая как раз и потребуется коду ява-скриптов на построение пагинации. Ну а сказочки про память веб-сервера это явно из разряда "чтобы раздать миллиону пользователь файл размером в мегабайт требуется террабайт ОЗУ". То есть порождение фантазии людей, неспособных работать с потоками (которые stream). ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:38 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov меньше чем за минуточку Минута на открытие справочника? Вы так троллите? Нередко, десяти секунд уже хвататет на то, чтобы пользователь схватил телефон, позвонил в поддержку и начать ругаться по поводу тормозов в системе. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:42 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov "чтобы раздать миллиону пользователь файл размером в мегабайт требуется террабайт ОЗУ". Откуда взялся мегабайт, если речь явно идет об объемах от 100 мегабайт в самом оптимичном случае? Если у ТС 10 миллионов строк и строки по килобайту, то речь о десяти гигабайтах сходу. А даже на внутренней системе сотня пользователей обычна. И они обладают особенностью грузить систему в одно и то же время. Например, сразу же после завершения расчета оптимизационной модели. Или Вы так троллите, надеясь освободить таким хитрым образом определенную вакансию? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:53 |
|
пагинация
|
|||
---|---|---|---|
#18+
ptr128 Нередко, десяти секунд уже хвататет на то, чтобы пользователь схватил телефон, позвонил в поддержку и начать ругаться по поводу тормозов в системе. Браузеры достаточно умны чтобы отображать поток данных по мере их поступления, а первые записи начнут посылаться ему сразу, не так ли?.. ptr128 Откуда взялся мегабайт, если речь явно идет об объемах от 100 мегабайт в самом оптимичном случае? Из одной статьи "специалиста по хайлоад" на хабре. Это цитата, если Вы не заметили кавычек. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 19:59 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov первые записи начнут посылаться ему сразу Это вряд ли. Все зависит от того, как распараллелит запрос SQL Server и когда нужный worker выдаст результат. Может хватить троллить? А? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 20:12 |
|
пагинация
|
|||
---|---|---|---|
#18+
ptr128 Все зависит от того, как распараллелит запрос SQL Server и когда нужный worker выдаст результат. Но, внезапно, не зависит от наличия в запросе OFFSET. Может, хватит тупить?.. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 14:50 |
|
пагинация
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov, Я не понимаю, какую цель Вы преследуете? Потроллить кого то? Доказать, что можно ценой увеличения нагрузки на SQL Server и сеть упростить жизнь веб-разработчику? И все это только ради того, чтобы не решать задачу в целом? Вот если будет требование бизнеса о доступности в браузере миллионов записей - появится смысл обсуждать технологию достижения этой цели. Но я такого требования ни здесь не вижу, ни в жизни еще ни разу не встречал. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.01.2021, 15:23 |
|
|
start [/forum/topic.php?fid=53&fpage=17&tid=1994274]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 288ms |
total: | 428ms |
0 / 0 |