sql >> データベース >  >> RDS >> Sqlserver

SQL Serverでカーソルを使用することが悪い習慣と見なされるのはなぜですか?

    カーソルがメモリを占有してロックを作成するためです。

    あなたが実際に行っているのは、セットベースのテクノロジーを非セットベースの機能に強制しようとしていることです。そして、公平を期すために、カーソルは 用途はありますが、セットベースのソリューションの使用に慣れていない多くの人々は、セットベースのソリューションを理解する代わりにカーソルを使用するため、眉をひそめています。

    ただし、カーソルを開くと、基本的にそれらの行がメモリにロードされてロックされ、潜在的なブロックが作成されます。次に、カーソルを循環しながら、他のテーブルに変更を加えながら、カーソルのすべてのメモリとロックを開いたままにします。

    これらはすべて、他のユーザーにパフォーマンスの問題を引き起こす可能性があります。

    したがって、原則として、カーソルは眉をひそめます。特に、それが問題を解決するために最初に到達した解決策である場合。



    1. Ubuntu20.04でPostgres13を使い始める

    2. Moodle用のMySQLデータベースのフェイルオーバーを自動的に管理する方法

    3. Oracleでクエリ結果をコンマ区切りリストとして返す

    4. MySQLは、1つのテーブルを除くすべての特権をデータベースに付与します