2011-02-10 21 views
0

私はこのクエリを最適化するために最適化理論の種類をストアドプロシージャは、内部で複数のユーザー定義関数を呼び出しシナリオと高い実行時間がかかり、他の文の最適化SQLクエリ

を実行すべきか?と懸念?

+1

あなたはどのデータベースを使用していますか? –

+0

Microsoft SQL Server – Sudantha

答えて

4

最適化は、コードなしで正確に答えられない、または正確な状況にアクセスできない複雑な対象です。しかし、いくつかのガイドラインがあります。最初のユーザー定義関数は、それ自体が特にスカラ関数を遅くする可能性があります。それらをインラインコードで置き換えるほうがはるかに高速かもしれません(すべての場合ではなく、ベースラインの時間を測定してさまざまな選択肢を試す理由)。多くのUDFがデータベースを一連のデータではなく行単位で実行する必要があるため。

複雑なSQLを最適化するには、まず実行計画を読み、Web上で無料の電子ブックを検索する方法を学ぶ必要があります。その後、プロファイラを効果的に使用する必要がありますアプリケーションによって)。索引付け、実行可能性、およびカーソルとループ・アクションをセットベースの照会に置き換える方法について学ぶ必要があります。

パフォーマンスチューニングに関する多くの優れた書籍があります。購入することをお勧めします。

+0

ここで同意する必要があります... SQLの外観はどうですか?基礎となる表にはどのような索引がありますか?あなたの使用パターンは何ですか(高い読み込み、まれな書き込みですか?) SQLプロファイラはあなたに何を表示しますか? CPU?行数? – EBarr

+1

私は答えが重要だと思うので、完全な質問でこれを尋ねます。多くのUDFがデータベースを一連のデータの代わりに行単位で実行する必要があるため、このステートメントを説明できますか? AFAIKは、ある時点で、すべてのRDBMSが行単位(rxr)で動作します。時には、同時に、すなわち並列で複数のrxr操作を行うことができます... –