Apa yang Anda dengar tentang pemindaian jarak jauh dan between di MySQL sama sekali tidak benar. Berikut adalah kutipan dari dokumentasi
:
Jadi, penggunaan indeks tidak mengherankan. Indeks terbaik untuk data ini adalah indeks gabungan pada start, end .
Masalah yang Anda miliki adalah Anda memiliki dua kolom start dan end . Ini membuat kueri sedikit lebih rumit.
Berikut ini mungkin berkinerja lebih baik dalam beberapa keadaan, dengan indeks di start dan indeks terpisah di end dan kunci utama pada baris:
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;