O particionamento de tabela não ajudará em nada .
Mas sim, existe uma boa maneira:Atualizar para uma versão atual do Postgres. Houve muitas melhorias para índices GiST, para o módulo pg_trgm em particular e para big data em geral. Deve ser substancialmente mais rápido com o Postgres 10.
Sua pesquisa "vizinho mais próximo" parece correta, mas para um pequeno
LIMIT
use esta consulta equivalente em vez disso:SELECT address, similarity(address, '981 maun st') AS sml
FROM addresses
WHERE address % '981 maun st'
ORDER BY address <-> '981 maun st'
LIMIT 10;
Citando o manual: