我问这个问题是因为我需要知道这个限制,因为我在我的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);
所以,这就是为什么我需要知道我的 $ query 字符串有多长,因为数组 $ uol_metadata_arr 可能包含很多项。
答案 0 :(得分:16)
WHERE metadata IN ('value1', 'value2')
INSERT
是性能杀手。此类查询无法在该列上使用索引。另一方面LIKE '%string%'
,is indexable
答案 1 :(得分:5)
请参阅max_allowed_packet全局变量。你需要访问my.cnf文件来调整它(并且需要在你的客户端调整它)。典型的默认值是1mb或16mb ......