mysql中的查询长度是否有限制?

Bak*_*yor 8 php mysql

我问这个问题是因为我需要知道这个限制,因为我在我的PHP脚本中生成SELECT查询,并且在查询中WHERE的一部分是在循环内部生成的.
确切地说,它看起来像这样

 $query="SELECT field_names FROM table_name WHERE ";
 $condition="metadata like \"%$uol_metadata_arr[0]%\" ";
 for($i=1; $i<count($uol_metadata_arr); $i++){
    $condition.=" OR metadata like \"%$uol_metadata_arr[$i]%\" ";
 }
 $query.=$condition;
 $result=mysql_query($query);
Run Code Online (Sandbox Code Playgroud)

所以,这就是为什么我需要知道我的$ query字符串可以有多长,因为数组$ uol_metadata_arr可能包含很多项.

Fra*_*mer 16

  1. (如果可能)使用 WHERE metadata IN ('value1', 'value2')
  2. 您可能需要增加max_allowed_pa​​cket.它默认为16MB(客户端,旧版本中低至1MB服务器端),并且构建一个超出该限制的查询并不困难(例如,从其他地方导入带有巨型INSERT查询的数据)

LIKE '%string%'是一个性能杀手.此类查询无法在该列上使用索引. LIKE 'string%'另一方面,是可索引的


irc*_*ell 5

请参阅max_allowed_pa​​cket全局变量.你需要访问my.cnf文件来调整它(并且需要在你的客户端调整它).典型的默认值是1mb或16mb ......