还有一些问题,但尽管有所有答案,我仍然没有理解这一点。问题是, 在这样的查询中:
select * from table WHERE userid = userid OR username = username
如果发现第一个条件为真, userid = userid ,mysql跟着测试第二个条件 OR username = username ???或不? 我想是的,但我想知道,因为我找不到任何文件的答案。 谢谢。
答案 0 :(得分:3)
没有"第一个条件"和"第二个条件"。 MySQL可以选择以任何顺序执行条件。 SQL查询表示结果集,而不是特定的处理步骤。
也就是说,如果多个条件通过Logger
或var cname=document.body.className.split("-");
var catNumber = cname[cname.length-1];
连接,那么MySQL将"短路"评估并在知道答案时停止。
文档在这一点上有点弱(它没有完全解释)。因此,MySQL(与几乎所有其他SQL数据库和编译器不同)可能在可能的情况下不会短路。 Here是一个博客,作者实际上对此进行了测试;所以至少有一个实例,编译器似乎会使评估短路。