首页 > 解决方案 > MySQL 中 FIELD() 函数的限制(以字节数/参数数计)是多少?

问题描述

我正在考虑使用https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_field,但它没有说明它可以有多少值的任何限制支持。

有没有人对此有任何见解?谢谢!

标签: mysqllimitmysql-5.7mysql-8.0string-function

解决方案


我不知道每个语法对 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_pa​​cket

我同意@Uueerdo — 如果您生成的表达式列表超过 4MB,那么您真的应该质疑您的任务方法是否是解决它的最佳方法。

我猜想 FIELD() 函数将以线性方式比较参数,因为实现可能从未猜到有人会提供很长的列表。因此,为每一行搜索数以万计的参数可能会成为一个糟糕的性能瓶颈。


推荐阅读