ホームページ >バックエンド開発 >PHPチュートリアル >MySQL のプリペアド ステートメントは配列ベースの WHERE 句クエリをどのように最適化できるのでしょうか?
配列ベースの WHERE 句クエリに MySQL を利用する
WHERE 句で複数の条件を処理する場合は、配列を使用してパフォーマンスを最適化することを検討してください。 mysqli プリペアドステートメント内の引数として。このアプローチにより、MySQL の機能を利用して結果を手動で並べ替える必要がなくなります。
次のようなクエリを想像してください。
SELECT * FROM somewhere WHERE `id` IN(1,5,18,25) ORDER BY `name`;
フェッチする ID の配列 ($ids = array(1) ,5,18,25))、次のようにして目的のデータを効率的に取得できます。手順:
単一のステートメントを準備します:
$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (?);');
配列を疑問符の文字列に組み込みます:
$clause = implode(',', array_fill(0, count($ids), '?'));
句を含むステートメントを再準備します含まれる:
$stmt = $mysqli->prepare('SELECT * FROM somewhere WHERE `id` IN (' . $clause . ') ORDER BY `name`;');
call_user_func_array を使用して ID をバインドします:
call_user_func_array(array($stmt, 'bind_param'), $ids);
これを使用しますこの技術では、ソートは MySQL によって実行されるため、手動操作の必要がなくなります。さらに、このアプローチは効率的であり、必要なデータベース クエリの数を減らします。
以上がMySQL のプリペアド ステートメントは配列ベースの WHERE 句クエリをどのように最適化できるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。