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

Pourquoi MySQL n'utilise-t-il pas les index optimaux

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.