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

时间:2013-03-19 01:05:59

标签: mysql sql

我正在尝试理解以下语句将如何在多个记录上执行。

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

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

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

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

2 个答案:

答案 0 :(得分:2)

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

  2. 不,如果OR中的第一个条件评估为true,它将不会检查第二个条件(无论如何,你知道最终结果是什么意思)

答案 1 :(得分:1)

  1. 在内存中,取决于DBMS。
  2. 当找到匹配时,它可能不会继续。一切都取决于特定的SQL实现,但一般来说,继续寻找匹配是没有效率的,所以我想说可能不会。