Zpomalení je pravděpodobně způsobeno matematickými operacemi, nikoli načítáním dat tabulky. Část vašich kritérií není proti polím záznamů, ale proti výsledku matematické operace s jinými záznamy, takže se stává O(N).
Důvod, proč Postgres nepoužívá index a místo toho volí Seq scan, je ten, že se rozhodl, že většinu záznamů tabulky bude nutné načíst během dotazování. Když má být načtena většina záznamů v tabulce, indexy nemusí přinést mnoho výhod, pokud vůbec nějaké.
Chcete-li věci urychlit, měli byste zvážit použití prostorových indexů a vyhledávání na základě okolí PostGis nebo alternativně Elasticsearch pomocí Dotaz na geografickou vzdálenost .