MS SQL中包含条件的错误计划
Sql server 2008 R2 我有两个问题MS SQL中包含条件的错误计划,sql,sql-server,tsql,sql-server-2008-r2,sql-execution-plan,Sql,Sql Server,Tsql,Sql Server 2008 R2,Sql Execution Plan,Sql server 2008 R2 我有两个问题 DECLARE @title NVARCHAR(500) = '"Finite" AND "Elements"' select * from papers p where (@title = '""' OR CONTAINS(p.name, @title)) select * from papers p where (CONTAINS(p.name, @title)) 第一个工作大约7秒,第二个工作几毫秒。为什么 问题出在@title='
DECLARE @title NVARCHAR(500) = '"Finite" AND "Elements"'
select * from papers p
where (@title = '""' OR CONTAINS(p.name, @title))
select * from papers p
where (CONTAINS(p.name, @title))
第一个工作大约7秒,第二个工作几毫秒。为什么
问题出在@title='''或…
位
在编译时,它不知道@title
实际上是否包含值”
,因此需要返回所有行
您可以尝试将选项(重新编译)
添加到查询中,以便在分配变量后重新编译,或者将其拆分为两种情况
IF @title = '""'
SELECT *
FROM papers
ELSE
SELECT *
FROM papers p
WHERE ( CONTAINS(p.name, @title) )
请出示这两个项目的计划。