# バッファリングされたクエリ
+ 結果は `TiDB` サーバーから `PHP` に送信され、`PHP` プロセスのメモリに保存されます
+ 行数や現在の結果へのポインタの移動などの追加操作が可能
+ 結果セットが大きいとメモリオーバーヘッドが大きくなる
+ バッファクエリは、結果セットが小さい場合や、すべての行を読み取る前に行数を知る必要がある場合にのみ使用する
+ **`mysqli`**: デフォルトで有効
  + オフにするには:**`$res = mysqli->query($sql, MYSQLI_USE_RESULT)`**
+ **`PDO_MySQL`**: デフォルトで無効
  + オンにするには:**`$dbhandle->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true)`**

------------------------------------------------------------
`mysqli`の場合、`mysqli::store_result()`はTTiDB サーバーから結果セット全体を取得し、`mysqli::use_result()`は行を1つずつ取得します。

`PDO_MySQL` の場合は、`PDO::MYSQL_ATTR_USE_BUFFERED_QUERY` を `true` または `false` に設定して、バッファリングされたクエリの動作をオンまたはオフにします。


バッファリングされたクエリは、結果セットが小さい場合や、すべての行を読み取る前に行数を知る必要がある場合にのみ適しています。

大量の行が予想され、結果セットに含まれる行数を事前に知る必要がない場合は、スライドに示されている PHP 文を使用して `mysqli` のバッファリングをオフにする。
