ほとんどのリレーショナルデータベースのほとんどのドライバーでは、結果にアクセスするためのデフォルトの推奨される方法は、カーソルまたはイテレーターを使用することです。
私が推測しているのは、データベースは次のようなことをしているということです。
- クエリを実行します。
- 結果を準備し、RAMに保存しますか?
- 結果のカーソルをクライアントに返します。
データベースドライバは、次の結果をフェッチするための呼び出しを受け取るたびに、そのカーソルをデータベースに渡します。これにより、次の結果が得られます。
しかし、それが本当に正しいかどうかはわかりません。私を困惑させるのは、データベースクライアントとデータベースサーバーが異なるノード上にあり、ネットワークを介して通信している場合、これは遅いのではないかということです。それは本当にそのような怠惰なアプローチを使用していますか?すべてのデータを返さないのは理にかなっていますが、それが取る中間パスはありますか?