Php mysql中的查询长度有限制吗?
我问这个问题是因为我需要知道这个限制,因为我在PHP脚本中生成SELECT查询,并且在循环中生成查询的位置部分Php mysql中的查询长度有限制吗?,php,mysql,Php,Mysql,我问这个问题是因为我需要知道这个限制,因为我在PHP脚本中生成SELECT查询,并且在循环中生成查询的位置部分 $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
$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=“从表\u name WHERE中选择字段\u name”;
$condition=“metadata like\”%$uol\U metadata\U arr[0]\”;
对于($i=1;$i)
(如果可能)使用WHERE元数据('value1','value2')
您可能需要增加。它默认为16MB(客户端,在旧版本中低至1MB服务器端),并且构建一个不受该限制的查询并不难(例如,使用巨大的插入
查询从其他地方导入数据)
像'%string%'
是一个性能杀手。这样的查询不能在该列上使用索引。像'string%'
另一方面,查看全局变量。您需要访问my.cnf文件来调整它(还需要在客户端上调整它)。典型的默认值是1mb或16mb…我相信您主要关心的应该是大量使用LIKE
(这很昂贵),而不是查询字符串本身的长度:)有没有将LIKE替换为其他内容的建议?全文索引可能是合适的。非常感谢所有参与此问题的人。我非常感谢你的帮助。我真的很喜欢stackoverflow的潜在用户,他们随时准备帮助您。在对我的sql查询进行了所有这些批评之后,我决定更改我的DB设计,以便跳过使用LIKE语句。所以现在我不会再使用这种血腥的东西了。这个社区也提出了新的设计,你可以在这里看到-。谢谢。但('value1','value2')中的元数据可能重复,仅当元数据完全等于value1或value2时才检索。在我的例子中,我需要检索类似的元数据,即我需要考虑“SQL”和“MySQL”是相等的字符串。<代码>其中(“Value1”、“Value2”)< /C> >中的元数据将不会做与他提到的相同的事情。它不会查看“value”是否在元数据中,而是检查列表中的每个值(“value1”、“value2”),以查看是否有任何项与元数据完全匹配。但是,如果OP涉及几十个where子句,OP肯定会想查看所提到的max_allowed_packet
。文档中说:“客户端和服务器都有自己的max_allowed_packet变量,因此如果要处理大数据包,必须在客户端和服务器中增加此变量。如果您使用的是mysql客户端程序,其默认的max_allowed_packet变量为16MB”,因此似乎仅mysql客户端程序的默认值为16MB。在服务器上,默认值为]|]|]。