Joindre la jointure externe sur un problème de performances sur deux colonnes

Je suis en utilisant une requête SQL qui est similaire à la forme suivante:

SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.person_uid = table2.person_uid
AND table1.period = table2.period

Et c'est soit trop lent ou quelque chose du blocage, car il faut au moins 4 minutes pour revenir. Si je devais le changer à cela:

SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.person_uid = table2.person_uid
WHERE table1.period = table2.period

puis il fonctionne très bien (mais ne retourne pas le bon nombre de colonnes). Est-il un moyen pour accélérer le processus?

Mise à JOUR: Il fait la même chose si je passe les deux dernières lignes de la dernière requête:

SELECT col1, col2
FROM table1
LEFT OUTER JOIN table2
ON table1.period = table2.period
WHERE table1.person_uid = table2.person_uid

Mise à JOUR 2: ce sont en fait des points de vue que je vais rejoindre. Malheureusement, ils sont sur une base de données je n'ai pas le contrôle, donc je ne peux pas (facilement) apporter des modifications à l'indexation. Je suis enclin à penser que c'est un problème d'indexation. Je vais attendre un peu avant d'accepter une réponse dans le cas où il y a un peu de magie pour accorder cette requête que je ne connais pas. Sinon, je vais accepter l'une des réponses et essayer de trouver un autre moyen de faire ce que je veux faire. Merci pour tout le monde de l'aide pour l'instant.

source d'informationauteur Jason Baker