Запрос Postgres select со смещением для большой таблицы занимает слишком много времени для обработки - PullRequest
0 голосов
/ 19 мая 2018

Чтобы обработать таблицу с 3 миллионами строк, я использую следующий запрос в psql:

select id, trans_id, name
from omx.customer 
where user_token is null 
order by id, trans_id l
imit 1000 offset 200000000

Получение данных занимает более 3 минут.Как улучшить производительность?

1 Ответ

0 голосов
/ 19 мая 2018

Проблема, с которой вы столкнулись, заключается в том, что для того, чтобы узнать, какие 1000 записей для выборки из базы данных фактически должны извлечь все 200000000 записей для их подсчета.

Основная стратегия борьбы с этой проблемой заключается в использовании предложения whereвместо смещения.

Если вам известны предыдущие 1000 строк (потому что это какой-то итеративно используемый запрос), вы можете вместо этого взять id и trans_id из последней строки этого набора и извлечь 1000 строк, следующих заэто.

Если цифра 200000000 не обязательно должна быть точной, и вы можете догадаться, с чего начать, то это может быть путь для решения проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...