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

Index sur jointure et où

Pour cette requête :

Select *
from A join
     B
     on A.id1 = B.id1 and A.id2 = B.id2
where A.year = 2016 and B.year = 2016;

Je suggérerais des index sur A(year, id1, id2) et B(id1, id2, year) .

Vous pouvez également écrire la requête comme :

Select *
from A join
     B
     on A.id1 = B.id1 and A.id2 = B.id2 and A.year = B.year
where A.year = 2016;

La réponse à votre question est "oui" et indexez sur B est la bonne chose à faire. Dans cette version, l'ordre des colonnes dans l'index n'a pas vraiment d'importance.