Index Generation in Postgres
If you create the index before loading the table, the time taken to load the data will be significantly increased. 

pre load:

create table my_table1(val integer);
create index my_index1 on my_table1(val);
insert into my_table1(val) select generate_series(1,100000) order by random();
Time: 31755.858 ms


post load:

create table my_table2(val integer);
insert into my_table2(val) select generate_series(1,100000) order by random();
Time: 15344.130 ms
create index my_index2 on my_table2(val);
Time: 4073.686 ms


If you are ok with that, with pg_restore you can:


Load just the schema using --schema-only
Create the index with --index
Load the data using --data-only


Of course "Buy more storage" may well be the best answer here...