Najlepszym indeksem dla Twojego zapytania jest indeks złożony dla (country, state, latitude, longitude)
(country
i state
można zamienić). MySQL ma dobrą dokumentację dotyczącą indeksów wielokolumnowych, czyli tutaj
.
Zasadniczo latitude
i longitude
nie są szczególnie selektywne indywidualnie. Niestety, standardowy indeks B-drzewa obsługuje tylko jedną nierówność, a zapytanie ma dwie.
Właściwie, jeśli chcesz przetwarzać GIS, powinieneś użyć przestrzennego rozszerzenia MySQL.