Co jste slyšeli o skenování rozsahu a between
v MySQL to prostě není pravda. Zde je citát z dokumentace
:
Použití indexu tedy není překvapivé. Nejlepší index pro tato data by byl složený index na start, end
.
Problém, který máte, je, že máte dva sloupce start
a end
. Tím je dotaz o něco složitější.
Následující by za určitých okolností mohly fungovat lépe, s indexem na start
a samostatný index na end
a primární klíč na řádcích:
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;