【かーそる】
カーソル(データベース) とは?
最終更新:
💡 検索結果の位置を持ち、行を取り出す
データベースの問い合わせ結果に対する位置を管理し、行を取り出す仕組み。1行ずつも複数行ずつも取得でき、移動方向や寿命はDBと設定によって異なる。
📌 このページのポイント
- 結果の位置を管理し、1行や指定件数の行を取り出す
- 後方への移動やコミット後の利用可否は設定による
- 少しずつ読むだけでは、省メモリや高速処理を保証しない
- APIのページ送りに使うトークンとは、管理する仕組みが異なる
SELECTで一括取得するのと何が違う?
カーソルは結果の位置を持ち、そこから行を取り出すよ。PostgreSQLのFETCH NEXTなら次の1行、FETCH FORWARD 100なら前方へ最大100行を取得する。SELECTの結果をどこまで一度に転送・保持するかは、DBやドライバーの方式によるんだ
カーソルならメモリを節約できる?
どんなときに使うの?
途中でコミットしても読み続けられる?
製品と設定次第だよ。PostgreSQLでは通常、作成したトランザクションの終了時に閉じる。WITH HOLDなら正常なコミット後も同じセッションで利用できるけれど、結果を一時ファイルやメモリへ保存する。使い終わったらCLOSEで資源を解放しよう
カーソルベースページネーションとは別物?
📖 おまけ:英語の意味
「Database Cursor」 = データベースの現在位置を扱う仕組み
💬 結果のどの位置から行を取り出すかを管理するよ。最初の行より前や最後の行より後にある状態もあるんだ