Le meilleur index pour votre requête est un index composite sur (country, state, latitude, longitude)
(country
et state
peut être échangé). MySQL a une bonne documentation sur les index multi-colonnes, qui est ici
.
Fondamentalement, latitude
et longitude
ne sont pas particulièrement sélectifs individuellement. Malheureusement, l'index B-tree standard ne prend en charge qu'une seule inégalité, et votre requête en a deux.
En fait, si vous souhaitez un traitement SIG, vous devez utiliser une extension spatiale de MySQL.