我正在考虑使用https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field,但它没有说明它可以有多少值的任何限制支持。
有没有人对此有任何见解?谢谢!
我正在考虑使用https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field,但它没有说明它可以有多少值的任何限制支持。
有没有人对此有任何见解?谢谢!
我不知道每个语法对 FIELD() 函数的参数数量有任何限制。我假设它受到 SQL 查询的最大长度的限制。
任何 SQL 查询的长度限制都由max_allowed_packet
字节决定。MySQL 5.7 中这个变量的默认值是 4MB。它可以增加到 1GB。https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet
我同意@Uueerdo — 如果您生成的表达式列表超过 4MB,那么您真的应该质疑您的任务方法是否是解决它的最佳方法。
我猜想 FIELD() 函数将以线性方式比较参数,因为实现可能从未猜到有人会提供很长的列表。因此,为每一行搜索数以万计的参数可能会成为一个糟糕的性能瓶颈。