sql >> Base de Datos >  >> RDS >> Oracle

Convertir entre cláusula a uniones

Lo que ha oído sobre los escaneos de rango y between en MySQL simplemente no es cierto. Aquí hay una cita de la documentación :

Por lo tanto, el uso de un índice no es sorprendente. El mejor índice para estos datos sería un índice compuesto en start, end .

El problema que tienes es que tienes dos columnas start y end . Esto hace que la consulta sea un poco más complicada.

Lo siguiente posiblemente podría funcionar mejor en algunas circunstancias, con un índice en start y un índice separado en end y una clave principal en las filas:

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;