7

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

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

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

1.当你执行一个 SQL 查询时,我相信它会查看表中的每一行。当找到匹配项时,它会将结果临时存储在哪里,直到可以返回所有结果?

2.在上面的例子中,假设我们正在查看表中的单行并且有一个匹配项summaryOR exp LIKE '%$keywords%'当已经找到匹配时,查询会继续执行吗?

4

2 回答 2

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

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

于 2013-03-19T01:15:26.983 回答
1
  1. 在内存中,取决于 DBMS。
  2. 当它找到匹配项时,它可能不会继续。一切都取决于特定的 SQL 实现,但总的来说,继续寻找匹配项效率不高,所以我会说可能不会。
于 2013-03-19T01:16:32.467 回答