MySQL を使用した PDO の IN ステートメントの最適化
MySQL の IN ステートメントで使用するために値の配列を PDO ステートメントにバインドする場合、値が正しく分離されていることを確認することが重要です。ただし、デフォルトでは、PDO は IN ステートメントを単一の文字列として扱うため、不正確な結果が生じる可能性があります。
前の質問で述べたように、解決策はクエリを手動で作成することです。ただし、これは、特に可変サイズのリストを使用する動的クエリの場合、理想的な解決策ではありません。
代替解決策:
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(CAST(products.id AS CHAR), :products)
そのような関数の例を次に示します。
CREATE FUNCTION split_str(s TEXT, delim CHAR) RETURNS SET<CHAR> BEGIN RETURN (SELECT explode(s, delim) X FROM DUAL); END
その後、この関数をquery:
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE products.id IN (SELECT X FROM split_str(:products, ','))
これらの代替ソリューションを使用すると、MySQL を使用して PDO の IN ステートメントをより効率的に処理できるようになり、正確な結果と最適な結果が保証されます。パフォーマンス。
以上が大きな値リストを含む MySQL の PDO IN ステートメントを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。