Существует таблица с этой структурой:Postgres, сортировочные
Table "public.all_emails"
│ Column | Type | Modifiers
│ ----------- + -------- + -----------
│ email | text |
│ frequency | bigint |
│Indexes:
│ "all_emails_email_idx" UNIQUE, btree (email)
Я хочу, чтобы переместить все записи из этой таблицы в другую базу данных, делая еще несколько операций с ними. Чтобы ускорить работу, я написал многопроцессорное приложение, которое занимает несколько раз конкретную часть таблицы. Для того, чтобы знать, какие из следующего процесса начинается, сортировать таблицу следующим образом:
Select email from all_emails order by email limit # {PULL_SIZE} offset # {offset}
С большим количеством записей в таблице, эта операция является весьма дорогостоящей и не является оптимальной. Как я могу сделать это лучше?
Как это устраняет проблему, которую OP хочет прочитать рядами в партиях, отсортированных по электронной почте? – Patrick
Он/она этого не хочет. «ORDER BY» просто дает смысл комбинации «OFFSET»/«LIMIT». Цель состоит в том, чтобы как можно быстрее переместить таблицу из одной базы данных в другую, и вопрос в том, есть ли способ сделать ее быстрее с распараллеливанием. –
@LaurenzAlbe, Возможно, вы не совсем меня правильно поняли. Мой скрипт имеет несколько параллельных процессов, чтобы взять часть таблицы для выполнения некоторых операций над строками и вставить ее в другую таблицу. Проблема была в неоптимальном образце, требуемом для каждой части процесса. –