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;