PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Ajouter des index pour accélérer Geocoder près de la recherche

Le ralentissement est probablement dû à des opérations mathématiques et non à la récupération de données de table. Une partie de vos critères ne concerne pas les champs d'enregistrement, mais le résultat de l'opération mathématique sur d'autres enregistrements, de sorte qu'il devient un O(N).

La raison pour laquelle Postgres n'utilise pas d'index et choisit Seq scan à la place est qu'il décide que la plupart des enregistrements de la table devront être récupérés lors de l'interrogation. Lorsque la plupart des enregistrements de la table doivent être récupérés, les index peuvent ne pas apporter beaucoup d'avantages, le cas échéant.

Pour accélérer les choses, vous devriez envisager d'utiliser des index spatiaux et une recherche basée sur le voisinage de PostGis ou, alternativement, Elasticsearch avec Requête de distance géographique .