Oracleのフォーマッタのためのヒキガエルからのアドバイス
質問
警告が何を意味するのでしょうか?
なぜ第より悪い第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)
所属していません StackOverflow