2010-12-31 15 views
15

SQL Serverのストアドプロシージャで、一時テーブルを使用するタイミングとカーソルを使用するタイミング。それは最高のオプションのパフォーマンスが賢明ですか?SQLサーバーの一時テーブルとカーソルの比較

+0

どちら:

は、あなたがこれを読んで提案します。 SQLはSETに基づいており、一般的にほとんどの場合一時表やカーソルを使用する状況を処理できます。 –

+1

CTEはなぜですか? http://msdn.microsoft.com/en-us/library/ms175972.aspx –

+1

ここで少しわかりますか?テンポラリテーブルとカーソルの使用は、りんごやオレンジのようなものです。テンポラリテーブルとテーブル変数はより適切な比較になります。 – tcnolan

答えて

18

可能であればの疫病のようなカーソルを避けてください。 SQL Serverはセットベースのです.RBAR(行単位の行)ファッションで行う必要がある作業は、遅く、低速で、SQLの仕組みの基本原則に反します。

あなたの質問は非常に曖昧です。その情報に基づいて、あなたがしようとしていることを実際には分かりません。ただし、可能な限り(可能な場合は大部分のケースで可能です)、セットベースの操作- SELECT, UPDATE, INSERTを使用して、SQL Serverに手続き的思考を強制しないでください。これは最善の方法ではありません。

セットベースの操作を使用してテンポラリテーブルを塗りつぶして使用できる場合は、その都度、そのメソッドをカーソルより優先します。

7

カーソルは行単位で動作し、パフォーマンスが非常に悪いです。ほとんどすべての場合、より良いセットベースのコード(通常はテンポラリテーブルではありません)に置き換えることができます。

テンポラリテーブルは、データ量とそれらで何をしているのかによって異なります。一般に、カーソルの代わりには使用されません。あなたはそれを助けることができるかどう http://wiki.lessthandot.com/index.php/Cursors_and_How_to_Avoid_Them

関連する問題