MyBatisカーソル検索の仕組み
MyBatis のカーソルクエリは、データベースが提供するカーソルメカニズムを使用してデータを行ごとに読み取ります。つまり、すべてのデータをメモリに一度にロードするのではなく、SQL ステートメントでカーソルを使用してデータベースサーバーに、結果セットではなくカーソルを返すように指示し、カーソルを介して 1 行ずつデータを取得します。
具体的な実施の手順は以下の通りです。
- カーソル付きSQL文を実行し、データベースサーバーがカーソルを返す必要があることを通知する。
- SQL文を実行して、検索結果をMyBatisへ返すのがデータベースサーバの役割です。
- MyBatisは、データベースから返されるカーソルをカーソルオブジェクトにラップして、アプリケーションに戻します。
- アプリケーションはカーソルオブジェクトを介してデータを逐次取得し、データがすべて取得されるかカーソルが閉じられるまで続けます。
カーソルクエリを使用することで、特に大規模データのクエリ操作時にメモリ使用量を削減できます。またMyBatisでは、一度に取得するデータの行数やプリペアドステートメントの利用など、カーソルクエリの性能を最適化するための追加設定オプションが提供されています。