SQL Server是否优化了LIKE('%%')查询?

Ahm*_*tun 4 sql sql-server search stored-procedures sql-like

我有一个存储过程来执行记录搜索.

问题是来自UI的一些搜索条件可能是空字符串.因此,当未指定条件时,LIKE语句变得多余.

我怎样才能有效地执行该搜索或Sql Server?或者,它是否优化了LIKE('%%')查询,因为它意味着没有可比较的内容?

存储过程是这样的:

ALTER PROC [FRA].[MCC_SEARCH]
@MCC_Code varchar(4),
@MCC_Desc nvarchar(50),
@Detail nvarchar(50)
AS
BEGIN             
       SELECT
             MCC_Code,
             MCC_Desc,
             CreateDate,
             CreatingUser

       FROM
              FRA.MCC (NOLOCK)
       WHERE
             MCC_Code LIKE ('%' + @MCC_Code + '%')
             AND MCC_Desc LIKE ('%' + @MCC_Desc + '%')
             AND Detail LIKE ('%' + @Detail + '%')
       ORDER BY MCC_Code

END
Run Code Online (Sandbox Code Playgroud)

Ada*_*Dev 5

关于最佳的,使用索引的执行计划 - 没有.前缀通配符可防止使用索引,从而导致扫描.

如果你在搜索词的末尾也没有通配符,那么这个场景可以进行优化 - 我在一段时间后发布了博客:优化通配符前缀LIKE条件

更新
澄清我的观点:
LIKE'Something%' - 能够使用索引
LIKE'%Something' - 无法使用开箱即用的索引.但是你可以通过遵循我链接的"REVERSE技术"来优化它以允许它使用索引.
LIKE'%Something%' - 无法使用索引.没有什么可以优化LIKE.