LoginSignup
1
0

MYSQLで大量の値をWHERE INで指定したらエラーが出た

Posted at

事象

MYSQLでWHERE INで値を大量に指定した際(10万個くらい)以下のエラーが発生した

SELECT * FROM user WHERE name IN ('tanaka','suzuki','kato'...)
Prepared statement contains too many placeholder

原因

MYSQLのプリペアードステートメントのプレースホルダーの上限は65,535までらしい

対応

IN句に渡す値を上限に行かない数に分割して、複数回SQLを実行する形式に変更

-- 60000件
SELECT * FROM user WHERE name IN ('tanaka','suzuki','kato'...)
-- 40000件
SELECT * FROM user WHERE name IN ('ishida','mori','saito'...)

参考

[MySQL] too many placeholders の解消
https://qiita.com/idek/items/80ffb8e4ffe99e28caed

MySQL: プリペアドステートメントのプレースホルダーの数は65535まで。
https://cufl.hateblo.jp/entry/2021/08/25/215402

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0