Oracle
 sql >> Base de données >  >> RDS >> Oracle

Conversion d'une clause entre en jointures

Ce que vous avez entendu sur les balayages de distance et between dans MySQL n'est tout simplement pas vrai. Voici une citation de la documentation :

L'utilisation d'un index n'est donc pas surprenante. Le meilleur index pour ces données serait un index composite sur start, end .

Le problème que vous avez est que vous avez deux colonnes start et end . Cela rend la requête un peu plus compliquée.

Les éléments suivants pourraient éventuellement mieux fonctionner dans certaines circonstances, avec un index sur start et un index séparé sur end et une clé primaire sur les lignes :

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;