Разделянето на таблицата няма да помогне въобще .
Но да, има добър начин:Надстройка към текуща версия на Postgres. Има много подобрения за GiST индексите, по-специално за модула pg_trgm и за големите данни като цяло. Би трябвало да е значително по-бързо с Postgres 10.
Вашето търсене на „най-близък съсед“ изглежда правилно, но за малък LIMIT
вместо това използвайте тази еквивалентна заявка:
SELECT address, similarity(address, '981 maun st') AS sml
FROM addresses
WHERE address % '981 maun st'
ORDER BY address <-> '981 maun st'
LIMIT 10;