powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Время выполнения запроса
6 сообщений из 6, страница 1 из 1
Время выполнения запроса
    #35681006
laser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SELECT * FROM
t1
LEFT JOIN t2 on t1.id = t2.t1_id
LEFT JOIN t3 on t1.id = t3.t1_id
LEFT JOIN t4 on t1.id = t4.t1_id
LIMIT 20 OFFSET start

start - значение offset

Подскажите пожалуйста как постгрес работает с такими запросами, сначала делает выборку а потом применяет лимит? И как по времени различаются такой запрос с лимитом и без него? И если менять start = 0, start = 50 000
И насколько это будет тяжёлый запрос при кол-вы записей в каждой таблице ~ 100 000
...
Рейтинг: 0 / 0
Время выполнения запроса
    #35681251
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
laserсначала делает выборку а потом применяет лимит?

И если менять start = 0, start = 50 000последний этап выполнения запроса Limit получает от нижестоящего только offset+limit строк. смотрите explain analyze.

laserИ как по времени различаются такой запрос с лимитом и без него?запрос с limit часто более быстрый, особенно если выполняется без сортировки. смотрите explain analyze.

laserИ насколько это будет тяжёлый запрос при кол-вы записей в каждой таблице ~ 100 000смотрите explain analyze.

PS: limit, offset имеют смысл только с order by
...
Рейтинг: 0 / 0
Время выполнения запроса
    #35681270
laser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeXa NalBatPS: limit, offset имеют смысл только с order by

Почему?
...
Рейтинг: 0 / 0
Время выполнения запроса
    #35681282
laser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что предпочтительней

SELECT * FROM
t1
LEFT JOIN t2 on t1.id = t2.t1_id
LEFT JOIN t3 on t1.id = t3.t1_id
LEFT JOIN t4 on t1.id = t4.t1_id

или

SELECT * FROM
t1, t2, t3, t4
WHERE
t1.id = t2.t1_id AND
t1.id = t3.t1_id AND
t1.id = t4.t1_id
...
Рейтинг: 0 / 0
Время выполнения запроса
    #35681284
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
laserLeXa NalBatPS: limit, offset имеют смысл только с order byПочему?потому что строки в РБД не упорядочены
...
Рейтинг: 0 / 0
Время выполнения запроса
    #35681296
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
laserА что предпочтительней

SELECT * FROM
t1
LEFT JOIN t2 on t1.id = t2.t1_id
LEFT JOIN t3 on t1.id = t3.t1_id
LEFT JOIN t4 on t1.id = t4.t1_id

или

SELECT * FROM
t1, t2, t3, t4
WHERE
t1.id = t2.t1_id AND
t1.id = t3.t1_id AND
t1.id = t4.t1_idэти запросы могут вернуть разный результат. если заменить LEFT на INNER, то такие запросы эквивалентны. скорее всего постгрес поймет что это одинаковые запросы и выберет для них одинаковый план выполнения.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Время выполнения запроса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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