Tabellpartitionering hjälper inte alls .
Men ja, det finns ett bra sätt:Uppgradera till en aktuell version av Postgres. Det har skett många förbättringar för GiST-index, för pg_trgm-modulen i synnerhet och för big data i allmänhet. Bör vara betydligt snabbare med Postgres 10.
Din "närmaste granne"-sökning ser korrekt ut men för en liten LIMIT
använd den här motsvarande frågan istället:
SELECT address, similarity(address, '981 maun st') AS sml
FROM addresses
WHERE address % '981 maun st'
ORDER BY address <-> '981 maun st'
LIMIT 10;