Domanda

Cosa significa l'avviso?

Perché il secondo esempio peggiore della prima?

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

FYI: entrambe le query funzionano bene e restituiscono gli stessi risultati

.
È stato utile?

Soluzione

Mettendo da parte quantità di dati, indici delle tabelle, e ha raccolto le statistiche; in generale, unnested subqueries dovrebbe outperform subquery nidificate .

Altri suggerimenti

La mia ipotesi: Sembra che ROSPO non è l'analisi della query allo stesso modo che Oracle avrebbe

.

Nella prima interrogazione, forse ROSPO controlla le definizioni di tabella per lims.sample e lims.product, e trova la colonna "product_id" in entrambi, quindi va bene.

Nella seconda query, il rospo non può controllare la definizione della tabella per la prima parte del join perché è una query nidificate; così forse si arrende e si dà questo consiglio (che è il motivo per cui il consiglio dice "... o si riferisce ad un'etichetta" che è probabilmente una copout).

Vorrei ignorare i consigli contenuti in questo caso, soprattutto perché funziona bene e restituisce gli stessi risultati.

Solo una supposizione, ma nella seconda interrogazione vostro subquery non è nominato - provare a dare è un alias; per esempio:

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top