Oracleのフォーマッタのためのヒキガエルからのアドバイス

StackOverflow https://stackoverflow.com/questions/952620

  •  11-09-2019
  •  | 
  •  

質問

警告が何を意味するのでしょうか?

なぜ第より悪い第2の例である

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

対ます。

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:両方のクエリは正常に動作し、同じ結果を返します。

役に立ちましたか?

解決

データ、インデックスのテーブル量をさておき、および統計情報を収集。一般的には、をネスト解除サブクエリのはずのアウトパフォームネストされたサブクエリの。

他のヒント

私の推測:ヒキガエルは、クエリにOracleがするのと同じ方法で解析していないように見えます。

最初のクエリでは、おそらく、TOADはlims.sampleとlims.productためのテーブル定義を確認し、両方の列「PRODUCT_ID」を見つけ、それは結構です。

2番目のクエリでは、ヒキガエルは、ネストされたクエリだから参加の最初の部分のためのテーブル定義を確認することはできません。ので、おそらくそれはあきらめ、あなたにこのアドバイスを与える(アドバイスが言う理由である「...またはそれはラベルを意味し、」おそらくcopoutです)。

私はそれがうまく実行され、同じ結果を返す特にとして、このインスタンスにアドバイスを無視します。

ただの推測ではなく、2番目のクエリでは、あなたのサブクエリは名前が付いていない - それに別名を与えてみてください。例えばます:

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top