2012-06-03 2 views
2

Compte tenu de la jointure suivante dans Oracle Pl/SQL:Conversion Oracle SQL JOIN requête dans MySQL requête

select a.field1, b.field1, b.field2 
from table_a a, table_b b 
where a.field2 = b.field3; 

Lorsqu'il est exécuté ce code dans MySQL, il faut vraiment beaucoup de temps pour faire le travail alors que dans Pl/SQL ça ne prend pas de temps. Les tables sont les mêmes dans les deux environnements. Aucun champ n'est indexé.

Y a-t-il une différence entre les jointures dans les deux dialectes? Quelle serait la traduction correcte de ceci en SQL standard?

+0

ce n'est pas vraiment 'JOIN', cette approche est plus lente car' JOIN' vous pouvez utiliser 'select a.field1, b.field1, b.field2 de table_a une jointure interne table_b b où a.field2 = b.field3 ' – Sajmon

+0

Donc, vous voulez dire que 'join ... on' donnerait le même résultat? – user1433877

Répondre

1

MySQL ne gère pas l'absence d'index. Oracle peut faire une jointure de hachage et être toujours rapide. Ajoutez des index sur les colonnes de jointure.

+1

Cela a fonctionné! Bonne réponse! – user1433877

0

Vous avez besoin d'index dans MySQL pour éviter le problème auquel vous êtes confronté.