【かーそる】
カーソル(DB) とは?
💡 DB検索結果を「1行ずつ順番に処理」するためのポインタ
📌 このページのポイント
- SELECT結果の行を1つずつ取り出して処理するときに使う
- ストアドプロシージャ内や、ORMの行列挙処理で使われる
- 大量データを一括取得するよりメモリ効率がよい
- 「カーソル=現在の処理位置を指し示すもの」という意味
語源は同じ「指し示すもの」だけど、DBのカーソルはSELECT結果の「今どの行を処理しているか」を指すポインタ。1万行の結果を一度に全部メモリに持たず、「FETCH(取得)→処理→次へ」と1行ずつ処理できる。
なんでカーソルを使うの?
Pythonで使うことはある?
DBライブラリ(psycopg2・MySQLConnectorなど)が内部でカーソルオブジェクトを使う。「cursor = conn.cursor(); cursor.execute('SELECT ...'); cursor.fetchone()」という書き方がそれ。「fetchone()」で1行取得、「fetchall()」で全行取得する。
カーソルを使わない方がいい場面ってあるの?
まとめ:ざっくりこれだけ覚えればOK!
カーソル(DB)って出てきたら「SELECT結果を1行ずつ順番に処理するためのポインタ機能」と思えばOK!
📖 おまけ:英語の意味
「Cursor」 = 指し示すもの・矢印
💬 PCの画面カーソル(マウスポインタ)と同語源で「現在位置を指し示す」という意味。DBでは処理中の行位置を指す