4

あるストアド プロシージャを別のストアド プロシージャ内から呼び出すと、パフォーマンスにまったく影響しませんか? これに関する答えを見つけることができませんでした。パフォーマンスに悪影響を与える場合、唯一の代替手段は、手順を 1 つの大きな手順として結合することだと思います。

SQLがクエリ統計を計画する方法により、Sprocs内で関数を呼び出すとパフォーマンスに悪影響を与えることはわかっています(SProc内でコードを再入力する方がよい)が、それは関数にのみ当てはまると思います。

前もって感謝します!

4

1 に答える 1

4

別のストアド プロシージャ自体を呼び出すストアド プロシージャでパフォーマンスの問題が発生したことはありません。

しかし、開発者が結果を理解せずに内部ストアド プロシージャを拡張したため、トランザクションが必要以上に大きくなり、深刻なパフォーマンスの問題を引き起こしているのを見てきました。

別の問題の例を次に示します。多くのシナリオにほぼ完璧な「優れた」ストアド プロシージャがあり、コーダーはそれをいたるところで使用します。ただし、ストアド プロシージャは実際には、呼び出し元の 90% が実際に必要とする列数の 2 倍を返します。呼び出しコードは最適化されていません。

これが、ストアド プロシージャに単純なセット ベースのロジックのみを含める必要がある理由であり、手続き型ロジックと他のストアド プロシージャの呼び出しを含む複雑なストアド プロシージャに反対する理由です。

だから...私見を避けるのが一番です。

于 2012-11-27T18:37:37.287 に答える