20

カーソルの代わりに while ループを使用することをお勧めしますか?

カーソルの長所/短所は何ですか?

4

3 に答える 3

10

私はこのちょっとしたアドバイスに従っています:

[...] カーソルと WHILE ループのどちらが優れていますか? 繰り返しますが、それは本当にあなたの状況に依存します。ほとんどの場合、必要に応じてカーソルを使用してレコードをループします。カーソル形式は、私にとってはもう少し直感的です。構文を使用して結果セットを 1 回ループするだけなので、FAST_FORWARD カーソルを使用するのが理にかなっています。使用するカーソルのタイプは、ループ構造のパフォーマンスに大きな影響を与えることに注意してください。

— Tim Chapman による SQL Server 2008 でのカーソルと WHILE ループのパフォーマンスの比較

リンクされた記事には、各アプローチを実装する方法の簡単な例が含まれています。

于 2011-01-13T20:07:52.567 に答える
9

これらの一部は DBMS によって異なりますが、一般的には次のとおりです。

長所:

  • 行ごとの処理に関しては、ループよりも優れています。

  • 大規模なデータセットでかなりうまく機能します

短所:

  • 同様にスケーリングしないでください

  • より多くのサーバー リソースを使用する

  • tempdb の負荷が増加します

  • 誤って使用すると、リークが発生する可能性があります (例: 対応するクローズなしで開く)

于 2008-09-26T14:32:47.480 に答える
1

そのカーソル/whileループで何をしているのかお尋ねします。

データを更新または返す場合は、適切な WHERE 句を使用しないでください。カーソルを使うべきではないと言う人を知っています。

于 2008-09-26T14:36:51.590 に答える