1000行と推定されます
1000
推定行は、 CREATEFUNCTIONに記載されているデフォルト値です。コード>
:
関数が揮発性であると宣言されると、インライン化されないように要求されるため、 result_rows
のこのデフォルト値 保持します。
一方、2番目のテストのようにクエリにインライン化されると、関数の本体がクエリに移動され、関数宣言が存在しないかのように行数が推定されます。これにより、2番目のテストで VALUES
以降の正確な見積もりが得られます。 条項は直接評価できます。
プランナーはここで正確に何をしていて、どこでドキュメントを読むことができますか?
一般に、プランナーの最適化戦略はメインドキュメントでは説明されていません。それらはメーリングリストで議論され、ソースコードのコメントで言及されています。これは幸いなことに(平均的なソースコードと比較して)非常に明確でよく書かれている傾向があります。関数のインライン化の場合、inline_set_returning_functions
のコメントを信じています。 および