範囲スキャンとbetween
について聞いたこと MySQLでは単に真実ではありません。これは、ドキュメント
からの引用です。 :
したがって、インデックスの使用は驚くべきことではありません。このデータに最適なインデックスは、start, end
の複合インデックスです。 。
あなたが持っている問題はあなたが2つの列start
を持っているということです およびend
。これにより、クエリが少し複雑になります。
start
にインデックスを付けると、状況によっては次のパフォーマンスが向上する可能性があります。 end
の個別のインデックス 行の主キー:
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;