对于给定的查询,
select * from contacts where name like "%$name%"
当变量$name
为空时,mysql是否优化查询以排除条件?
当$ name为空字符串时,查询将作为
执行select * from contacts
或
select * from contacts where name like "%%"
答案 0 :(得分:1)
正如Alex K在评论中提到的,MySQL不会做任何事情来优化类似的查询。
如果行中有空值,查询将不会返回结果集中的那些行,这说明每行都有一个检查。 如建议的那样,最好检查一下代码,如果搜索值为空,则跳过like子句。
答案 1 :(得分:-1)
没有
在$ name为空的情况下,使用PHP条件完全跳过查询。