Ce que vous avez entendu sur les balayages de distance et between
dans MySQL n'est tout simplement pas vrai. Voici une citation de la documentation
:
L'utilisation d'un index n'est donc pas surprenante. Le meilleur index pour ces données serait un index composite sur start, end
.
Le problème que vous avez est que vous avez deux colonnes start
et end
. Cela rend la requête un peu plus compliquée.
Les éléments suivants pourraient éventuellement mieux fonctionner dans certaines circonstances, avec un index sur start
et un index séparé sur end
et une clé primaire sur les lignes :
select gt.*
from (SELECT * FROM autumn4.ip WHERE :number >= start) gt join
(SELECT * FROM autumn4.ip WHERE :number <= end) lt
on gt.PRIMARYKEY = lt.PRIMARYKEY;