質問

カーソルの代わりにwhileループを使用するのは良い考えですか?カーソルの長所と短所は何ですか?

役に立ちましたか?

解決

これらの一部はDBMSに依存しますが、一般的には:

長所:

  • 行ごとの処理に関しては、ループを実行します

  • 大規模なデータセットで十分に動作します

短所:

  • 同様にスケーリングしない

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

  • tempdbの負荷を増やす

  • 誤って使用すると、リークが発生する可能性があります(たとえば、対応する閉じることなく開く)

他のヒント

私はこのアドバイスに従っています:

  

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

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

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

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

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

カーソルの短所には、こちら

があります。

その後、これ(実際には非常に興味深い問題と呼ばれる-"ハロウィーンの問題")

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top