次の表があります。
CREATE TABLE numbert_t ( v DOUBLE , id INTEGER, INDEX(v) )
そして、距離 abs( q - v ) でポイントをソートするパラメーター q を使用してクエリを実行したいと考えています。例えば
SELECT v, id, ABS( q - v ) AS d FROM number_t ORDER BY d
上記のクエリとこれを試しました:
SELECT v, id, (v - q) AS d FROM numbers_t WHERE (v - q) > 0
ORDER BY d
上記のわずかなバリエーションも試しました:
SELECT v, id, (v - q) AS d FROM numbers_t WHERE v > q ORDER BY v
それらは同等ではありませんが、2 つのクエリを実行し、2 つの独立したカーソルを持つことは気にしません。ただし、すべての場合において、EXPLAIN は filesort を示し、インデックスは使用されません。この問題に対して、MySQL に何らかの方法でインデックスを使用させることはできますか?