Estou trabalhando com uma tabela que contém aproximadamente 70 milhões de registros. Preciso criar uma chave primária e vários índices nesta tabela. As consultas SQL que estou usando são as seguintes:
BEGIN;
ALTER TABLE table_name ADD CONSTRAINT table_name_pkey PRIMARY KEY (uniqueid);
CREATE INDEX IF NOT EXISTS table_name_column1_idx ON table_name (column1);
CREATE INDEX IF NOT EXISTS table_name_column2_idx ON table_name (column2);
CREATE INDEX IF NOT EXISTS table_name_column3_idx ON table_name (column3);
CREATE INDEX IF NOT EXISTS table_name_column4_idx ON table_name (column4);
CREATE INDEX IF NOT EXISTS table_name_column5_idx ON table_name (column5);
COMMIT;
No entanto, executar essas consultas leva um tempo considerável. Não tenho nenhuma restrição de recursos, então estou procurando maneiras de otimizar esse processo. Especificamente, estou considerando executar essas consultas SQL em paralelo ou simultaneamente a partir de um aplicativo Python Django.
Minhas perguntas são:
1. Quais estratégias posso usar para minimizar bloqueios e tornar o processo de indexação mais rápido?
2. Existem práticas recomendadas ou ferramentas que podem ajudar a gerenciar a criação de vários índices em uma tabela grande de forma eficiente?
3. Usar BEGIN; COMMIT; durante a criação do índice traz algum benefício de desempenho?
Qualquer conselho ou recomendação será muito apreciado.