Question

Que signifie l'avertissement?

Pourquoi le deuxième exemple pire que le premier?

SELECT   product_id, prod.name name, sample_id
  FROM   lims.sample JOIN lims.product prod USING (product_id)

vs.

SELECT   product_id, prod.name name, sample_id
  FROM   (SELECT   sample_id, product_id FROM lims.sample)
         JOIN lims.product prod
/* ADVICE: [131]  This item has not been declared, or it refers to a label */
            USING (product_id)

/* ADVICE:
ADVICE SUMMARY

Count  Recommendation
-----  --------------
    1  [131]  This item has not been declared, or it refers to a label
                  The Oracle equivalent error messages are  PLS-00320 and
                  PLS-0321.
*/

Pour votre information: Les deux requêtes fonctionnent bien et renvoient les mêmes résultats

.
Était-ce utile?

La solution

Mettre de côté les tables de quantité de données, des index et des statistiques recueillies; en général, sous-requêtes non imbriquées devrait surperformer les sous-requêtes imbriquées .

Autres conseils

Je pense: On dirait que TOAD n'est pas l'analyse de la requête de la même manière qu'Oracle

.

Dans la première requête, peut-être TOAD vérifie les définitions de table pour lims.sample et lims.product, et trouve la colonne « product_id » dans les deux, il est donc très bien.

Dans la seconde requête, TOAD ne peut pas vérifier la définition de table pour la première partie de la jointure, car il est une requête imbriquée; alors peut-être qu'il donne et vous donne ce conseil (ce qui explique pourquoi le conseil dit « ... ou il fait référence à une étiquette » qui est probablement une dérobade).

J'ignorer les conseils dans ce cas, surtout en ce qui fonctionne très bien et retourne les mêmes résultats.

Juste une supposition, mais dans la deuxième requête de votre sous-requête n'est pas nommé - essayez lui donner un alias; par exemple:

SELECT   product_id, prod.name name, sample_id
  FROM   (SELECT   sample_id, product_id FROM lims.sample) samp
         JOIN lims.product prod
            USING (product_id)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top