先日の勉強会で話題になったので少しだけ。 カーソル処理はパフォーマンス問題の原因になります、という主張についてです。 私は勉強会などでカーソル処理は辞めた方が良い、と言います。 その理由は処理遅延が起きるからです。 その主張の根拠としているのは以下です。 ・SQLは結果セットでの処理に適した処理系であり、手続き型言語の処理に合わせたカーソル処理はRDBMSで処理するには無駄が多い(RDBMS内では1行1行処理するので、都度アプリとの通信が発生し、ターンアラウンドの時間が無駄になる) ・SQL Serverではカーソルの中間データは場合によってTEMPDBに保存され、都度呼び出される。つまりDISK IOが発生する要因となる カーソルは数百行程度の処理であればそれほどパフォーマンス問題は起きにくいと思いますが 数万行、数億行を1行1行丁寧に処理すると、1行の処理そのものは遅くなくても、処理全