nosqlが普及してきましたが、まだまだSQLが主流な気がします
今日phpマニュアルを閲覧していたら、mysqliクエリが興味深いパラメータを渡すことができることを発見しました
これら 2 つのパラメータは、PHP マニュアルで次のように説明されています。
誰かが phpmanul でこれを言いました: 大量のデータを取得する必要がある場合は、MYSQLI_USE_RESULT を使用します
(1) 違いは、サーバーから結果セットの行を取得する点です。
(2) MYSQLI_USE_RESULT はクエリを開始しますが、実際には行を取得しません
(3) MYSQLI_STORE_RESULT はすべての行を即座に取得します
(4) MYSQLI_STORE_RESULT がサーバーから結果セットを取得すると、行が抽出され、それらにメモリが割り当てられ、クライアントに格納されます。その後、mysqli_fetch_array() を呼び出しても、データ構造が切り離されるだけなので、エラーは返されません。 mysqli_fetch_array() による NULL の戻りは、結果セットの最後に到達したことを常に示します。
(5) MYSQLI_USE_RESULT 自体は行を取得せず、行ごとの取得を開始するだけです。つまり、行ごとに mysqli_fetch_array() を呼び出して完了する必要があります。そのため、通常の状況では、mysqli_fetch_array() が NULL を返す場合でも、結果セットの最後に到達したことを示しますが、サーバーとの通信中にエラーが発生したことを示す場合もあります。
概要
MYSQLI_USE_RESULT と比較すると、MYSQLI_STORE_RESULT はより多くのメモリと処理要件を必要とします。結果セット全体がクライアント上で保持されるため、一度に複数の行を取得する場合、メモリ割り当てとデータ構造の作成のコストが非常に大きくなります。 MYSQLI_USE_RESULT を使用できます。MYSQLI_USE_RESULT は、毎回処理される 1 行に十分なスペースのみが割り当てられるため、メモリ要件が低くなります。これは、結果セット用の複雑なデータ構造を作成する必要がないため、高速になります。一方、MYSQLI_USE_RESULT はサーバーに大きな負荷をかけるため、クライアントがすべての行を取得するのに適していると思われるまで、結果セット内の行を保持する必要があります。