2010-11-09 8 views

Répondre

2

La use_hash pointe demande une jointure de hachage sur les tables spécifiées. Une jointure de hachage charge les lignes de la table de gauche dans une table de hachage en mémoire.

L'indicateur use_merge force une opération de tri/fusion qui effectue essentiellement une analyse de table complète et crée un index traditionnel à la volée. À savoir, A à Z.

En raison des restrictions de mémoire sur les jointures de hachage, vous voulez les utiliser, en général, que sur les petites tables de la main gauche

Trier les jointures de fusion sont généralement mieux pour les requêtes qui produisent très grand résultat ensembles ou tables qui ne possèdent pas d'index sur les clés de jointure.

3

« quand/pourquoi devrais-je utiliser l'un ou l'autre »

En général, vous ne devriez pas vous inquiéter à ce sujet. C'est ce à quoi sert l'optimiseur Oracle.

+0

Je suis d'accord que généralement je ne devrais pas m'inquiéter à ce sujet. Y aurait-il des moments où je devrais m'inquiéter à ce sujet? – Matthew

+3

@Matthew: comme tous les indices, ils font partie d'une stratégie pour ajuster les conditions lorsque l'optimiseur ne peut pas trouver le plan optimal pour une requête (par exemple, lorsque vous en savez plus sur les données, il le fait). Ils doivent être utilisés avec parcimonie car ils limitent les choix de l'optimiseur. –

Questions connexes