【问题标题】:Will an SQL statement stop execution on the first match in an OR statement?SQL 语句会在 OR 语句中的第一个匹配项上停止执行吗?
【发布时间】:2013-03-19 09:16:32
【问题描述】:

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

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%' 找到匹配后,查询是否会继续执行?

【问题讨论】:

标签: mysql sql


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

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

【讨论】:

  • 谢谢,我就是这么想的。想要 100% 确定。
【解决方案2】:
  1. 在内存中,取决于 DBMS。
  2. 当它找到匹配时,它可能不会继续。一切都取决于特定的 SQL 实现,但总的来说,继续寻找匹配项效率不高,所以我会说可能不会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2021-08-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-24
    • 2019-08-20
    相关资源
    最近更新 更多