Je veux éviter l'accès de la table complète dans le plan d'exécution, mais cela ne fonctionne pas même lorsque je force l'index / * index () * / dans cette requête: L'index est créé sur chaque attribut des tables. P> Plan hash value: 2782848463
---------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes |TempSpc| Cost (%CPU)| Time |
---------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 40M| 8376M| | 1594K (1)| 00:01:03 |
|* 1 | HASH JOIN | | 40M| 8376M| 4284M| 1594K (1)| 00:01:03 |
|* 2 | HASH JOIN | | 40M| 3821M| 1505M| 543K (1)| 00:00:22 |
| 3 | SORT UNIQUE | | 40M| 1042M| | 146K (1)| 00:00:06 |
|* 4 | TABLE ACCESS FULL| SIGNATURE | 40M| 1042M| | 146K (1)| 00:00:06 |
|* 5 | TABLE ACCESS FULL | STOCKAGE | 48M| 3322M| | 130K (2)| 00:00:06 |
| 6 | TABLE ACCESS FULL | ALLOTISSEMENT_FLUX | 49M| 5527M| | 536K (1)| 00:00:21 |
---------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("AF"."ID"="SIG"."ID_FLUX")
2 - access("ST"."ID_FLUX"="SIG"."ID_FLUX")
4 - filter("SIG"."NB_APPEL_SERVICE_SIGNATURE"<4 AND "SIG"."STATUT_SIGNATURE"='SIGNE'
AND "SIG"."DATE_STATUT_SIGNATURE">=SYSDATE@!-1000)
5 - filter("ST"."STATUT_STOCKAGE"='OUI' AND "ST"."DATE_STATUT_STOCKAGE">=SYSDATE@!-1000)
3 Réponses :
Je commencerais par former cela comme une jointure code> normale code>: On ignore ce que les indices fonctionnent mieux, mais les éléments suivants doivent être pris en compte: p>
Signature (Statut_signature, date_statut_signature, nb_appel_service_signature, id_flux) code> li>
stockage (statut_stockage, date_statut_stockage, id_flux) code> li>
allotissement_flux (id) code> - vous avez probablement celui-ci déjà li>
ul> p>
Le moyen le plus simple: Utilisez le paramètre «+ contour» dans le paramètre de format DBMS_XPLAN - Il vous indiquera que la section de contour où vous pouvez prendre des conseils de contour, modifier requis et ajouter comme des allusions. P>
ps. Ce n'est pas une bonne idée d'utilisation existant () dans la section - CBO convertit la syntaxe ANSI à une seule syntaxe natif, de sorte que vos indices peuvent devenir invalides. P>
Vous devez utiliser des conditions de jointure simples. Essayez ce qui suit: p> existe code> dans la référence code> code> ne vous donnera pas de bonnes performances.
J'ai supprimé les balises de base de données incohérentes. Tagez uniquement avec la base de données que vous utilisez vraiment. Le code ressemble à Oracle, alors j'ai laissé ça. De plus, les échantillons de données, les résultats souhaités et une explication de la logique que vous souhaitez impliquer aideraient.