我是t-sql和sql server的新手,我有一个关于短路和全文搜索的问题。 假设我有这样的语句:用全文搜索谓词在sql server中短路
SELECT *
FROM t1
LEFT JOIN t2
ON t1.Id = t2.Id
WHERE contains(t1.Field1,@word) or contains(t2.Field2,@word)
这里我的想法是检查t1.Field1包含@word,如果这是真的 - 不需要检查第二conditon,如果是假的 - 检查第二个包含。但我已经明白,这不起作用,并且此查询执行包含并花费时间来处理不必要的工作。所以我想问如何避免执行这些不必要的谓词。
你有什么证据证明它正在做额外的工作?我会将其改为“和(包含(t1.Field1,@ word)或包含(t2.Field2,@ word))” – Paparazzi 2014-12-08 19:32:16
[SQL Server中的OR操作符短路](http:// stackoverflow。 COM /问题/ 11219791 /或运营商短路式-SQL服务器) – 2014-12-09 14:14:10