powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / LIMIT и OFFSET
18 сообщений из 18, страница 1 из 1
LIMIT и OFFSET
    #35668480
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реализуется постраничная навигация. Где-то на форумах читал, что при использовании OFFSET скорость заметно снижается. Пробовал 2 запроса, один из них с использованием LIMIT (выборка первых 10 записей), и с использованием LIMIT и OFFSET (выборка с 10й строки по 20ю). Так вот в первом случае запрос выполняется за 16ms, а во втором за 31ms. В 2 раза получается скорость снижается. Можно ли как-то ускорить этот процесс?
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668579
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если получится, использовать для постраничного вывода не limit N offset M, а where order>M limit N
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668590
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatесли получится, использовать для постраничного вывода не limit N offset M, а where order>M limit N
Нет, не получиться. Потому что id идут от 1 до N, то некоторых id нет. Ну удалялись записи. Поэтому в поле id, первая строка может иметь id = 1, а уже вторая id = 23.
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668653
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рисовать полную разбивку по страницам, а рисовать только ссылку "следующая страница" с cgi-параметром min_id=123, где 123 - id последней строки показанной на текущей странице. при показе страницы делать запрос where id>$min_id limit 10.
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668659
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatне рисовать полную разбивку по страницам, а рисовать только ссылку "следующая страница" с cgi-параметром min_id=123, где 123 - id последней строки показанной на текущей странице. при показе страницы делать запрос where id>$min_id limit 10.
Нужна полная, чтобы люди знали сколько всего страниц.
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668694
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
now_new_userНужна полная, чтобы люди знали сколько всего страниц.и как вы узнаёте, сколько всего страниц?
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668700
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatnow_new_userНужна полная, чтобы люди знали сколько всего страниц.и как вы узнаёте, сколько всего страниц?
Количество всех записей делим на кол-во отображаемых на странице. В чем беда-то?
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668707
Sishnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
now_new_userпервом случае запрос выполняется за 16ms, а во втором за 31ms. В 2 раза получается скорость снижается. Можно ли как-то ускорить этот процесс?

Вы чего вообще? Вы бы еще пример дали где: 31 ms и 32 ms. И сказали что первый способ работает быстрее.
Никто не измеряет время на таких объемах. Плюс вы забываете о множестве внешних факторов, включая саму ОС. Если один запрос выполняется 500 ms, а второй 250 ms, то это ощутимо..
И не забывайте, что PostgreSQL сам может многое закешировать.

На практике (лично у меня) OFFSET никаких сбоев в производительности не дает, в отличие LIMIT.

З.Ы. А вы небось еще и с помощью pgAdmin время измеряли?
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668715
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
now_new_userКоличество всех записей...как узнаёте кол-во всех записей?
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668718
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sishnikovnow_new_userпервом случае запрос выполняется за 16ms, а во втором за 31ms. В 2 раза получается скорость снижается. Можно ли как-то ускорить этот процесс?

На практике (лично у меня) OFFSET никаких сбоев в производительности не дает, в отличие LIMIT.

З.Ы. А вы небось еще и с помощью pgAdmin время измеряли?
1. Я привёл как пример.
2. Ага. pgAdmin. :)

Меня больше интересует, как можно ускорить процесс. Покапайтесь по форумам и заметите, что не я один пишу, что OFFSET работает медленно. Думаю это написнао в мануале, но eng я знаю очень плохо.
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668719
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatnow_new_userКоличество всех записей...как узнаёте кол-во всех записей?
count(*)

вы видимо вообще не знаете sql
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668731
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
на произвольных запросах узнать количество страниц несоизмеримо затратнее чем вывести одну страницу с помощью оффсета. я б не стал тут заморачиваться. кроме того, если пользователь будет последовательно щелкать по страницам то первые результаты постгре закеширует и этот оффсет вообще на скорости не скажется. ну и естесственно 16мс, 32 мс - это не показатель ни разу. нужно на произвольных(!) данных тестировать неоднократно (тысячи, миллионы раз), иначе вы меряете скорость сетевых интерфейсов, кеша постгре и кеша файловой подсистемы сервера, а не производительность выборки данных.
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668736
untitled
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вы собираетесь в каждом запросе делать count(*) ? тогда точно можете не заморачиваться по поводу оффсета, его тормоза будут составлять малые доли процента от всех тормозов ))
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668739
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
now_new_usercount(*)запрос count(*) будет выполняться не быстрее, чем с любыми значениями limit/offset. поэтому оптимизировав запрос limit/offset вы не ускорите общее время работы двух запросов больше чем на половину.

какое ориентировочное ожидается количество всех записей в выборке?

now_new_userвы видимо вообще не знаете sqlя знаю не только sql, но и postgresql
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668754
now_new_user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBat[quot now_new_user]какое ориентировочное ожидается количество всех записей в выборке?
Около 100.000.
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35668784
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
now_new_userОколо 100.000.и как собираетесь ускорять запрос select count(*)? он будет выполняться гораздо дольше 30 миллисекунд. может все-таки отказаться от полной разбивки по страницам?
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35669105
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
храните промежуточное значение.

создайте доп таблицу которая будет содержать кол-во записей в остальных таблицах или если данные не часто добавляются удаляются то можна брать из системных представлений тут проскакивали кажется примеры

Со всеми разговариваю уважительно, но недолго. На вопросы типа ...Как дела? ...не отвечаю, это флуд.
© Lister the Tormentor
...
Рейтинг: 0 / 0
LIMIT и OFFSET
    #35669207
Фотография ss25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / LIMIT и OFFSET
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]