z列に基づいて3つの先行または後続を選択するテーブルRがあります。z列にbtreeインデックスがあります。
SELECT key, z, x, y FROM R
WHERE z <= some_value
ORDER BY z DESC
LIMIT 3
「すぐに」前任者を取得しますが
SELECT key, z, x, y FROM R
WHERE z >= some_value
ORDER BY z ASC
LIMIT 3
は、z> = some_valueを持つすべての行のスキャンを開始するため、次のエントリを取得するのに役立ちません。Explainは、クエリがどのように満たされるかについて同じ説明を提供します。なぜこれで、私はそれについて何ができるでしょうか?
編集:実際には2つのインデックスがあり、1つは昇順、もう1つは降順です。上記の両方のクエリについて説明すると、「制限(コスト=0.00..31.91行=3幅=20)」「-> rでzreverseを使用して後方にインデックススキャン(コスト=0.00..17727815.24行=1666667幅=20)」「フィルタ:(z> = some_value ")