SQL语句是否会在OR语句中的第一个匹配项上停止执行?

kai*_*der 6 mysql sql

我试图了解以下语句将如何在多个记录上执行.

SELECT * FROM test 
WHERE product='$product' 
AND (summary LIKE '%$keywords%' OR exp LIKE '%$keywords%')  
ORDER BY `$order_by` DESC;
Run Code Online (Sandbox Code Playgroud)

我对SQL很新,所以这就是我想知道的:

1.当您执行SQL查询时,我相信它会查看表中的每一行.找到匹配项后,它会暂时存储结果,直到返回所有结果为止?

2.在上面的例子中,假设我们正在查看表中的单行并且匹配summary.当查询OR exp LIKE '%$keywords%'已找到匹配时,查询是否会继续执行?

ger*_*tan 2

  1. 由数据库引擎决定如何存储临时结果。每个数据库引擎的实现可能不同。客户端得到的是由行组成的结果集(如果查询产生结果)

  2. 不,如果 OR 中的第一个条件评估为 true,它不会检查第二个条件(无论如何这样做有什么意义,你已经知道最终结果)