SQL Server如何在后台执行此查询

Mat*_*att 1 sql sql-server performance

SELECT 
    *
FROM 
    myTable
WHERE 
    field1 LIKE 'match0' AND
    myfunc(t1.hardwareConfig) LIKE 'match1'
Run Code Online (Sandbox Code Playgroud)

这是我的问题,

field1的匹配快速而快速,但myfunc需要永远返回,我想确保如果field1不匹配,它甚至不会尝试执行myfunc.

SQL会知道这个还是我可以在查询中明确说明?

我正在使用MSSQL 2000,2005和2008,希望有一个共同的答案.

A-K*_*A-K 7

要强制执行评估条件的顺序,请使用以下方法,因为记录了CASE保留评估条件的顺序.

SELECT 
        *
FROM 
        myTable
WHERE 
  CASE WHEN field1 LIKE 'match0' THEN 
    CASE WHEN myfunc(t1.hardwareConfig) LIKE 'match1' 
      THEN 1 
    END 
  END = 1
Run Code Online (Sandbox Code Playgroud)

以下文章详细解释了它:SQL中的谓词