Vad du har hört om räckviddssökningar och between
i MySQL är helt enkelt inte sant. Här är ett citat från dokumentationen
:
Så användningen av ett index är inte förvånande. Det bästa indexet för denna data skulle vara ett sammansatt index på start, end
.
Problemet du har är att du har två kolumner start
och end
. Detta gör frågan lite mer komplicerad.
Följande kan tänkas fungera bättre under vissa omständigheter, med ett index på start
och ett separat index på end
och en primärnyckel på raderna:
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;