Frage

Was bedeutet die Warnung?

Warum ist das zweite Beispiel schlimmer als das erste?

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.
*/

Zu Ihrer Information:Beide Abfragen laufen einwandfrei und liefern die gleichen Ergebnisse.

War es hilfreich?

Lösung

Setzen der Tabellen Datenmenge beiseite, Indizes und sammelte Statistiken; in der Regel nicht verschachtelte Unterabfragen sollte outperform verschachtelte Unterabfragen .

Andere Tipps

Meine Vermutung: Es sieht aus wie TOAD nicht wird die Abfrage auf die gleiche Weise Parsen, dass Oracle würde

.

In der ersten Abfrage, vielleicht TOAD prüft die Tabellendefinitionen für lims.sample und lims.product und findet die Spalte „product_id“ in beide, so ist es in Ordnung.

In der zweiten Abfrage kann TOAD überprüfen nicht die Tabellendefinition für den ersten Teil der Verbindung, weil es eine verschachtelte Abfrage ist; so vielleicht gibt es und gibt Ihnen diesen Rat (weshalb der Rat sagt: „... oder es bezieht sich auf ein Etikett“, das wahrscheinlich ein copout ist).

Ich würde den Rat in diesem Fall ignorieren, vor allem, wie es läuft gut und gibt die gleichen Ergebnisse.

Nur eine Vermutung, aber in der zweiten Abfrage wird Ihre Unterabfrage nicht benannt – versuchen Sie, ihr einen Alias ​​zu geben;Zum Beispiel:

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top