相关疑难解决方法(0)

SQL Server是否优化了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)

sql sql-server search stored-procedures sql-like

4
推荐指数
1
解决办法
9505
查看次数

SQL Server:如何优化"喜欢"查询?

我有一个查询,使用通配符"喜欢"搜索客户端.例如:

SELECT TOP (10) 
       [t0].[CLIENTNUMBER], 
       [t0].[FIRSTNAME], 
       [t0].[LASTNAME], 
       [t0].[MI], 
       [t0].[MDOCNUMBER]
  FROM [dbo].[CLIENT] AS [t0]
 WHERE (LTRIM(RTRIM([t0].[DOCREVNO])) = '0') 
   AND ([t0].[FIRSTNAME] LIKE '%John%') 
   AND ([t0].[LASTNAME] LIKE '%Smith%') 
   AND ([t0].[SSN] LIKE '%123%') 
   AND ([t0].[CLIENTNUMBER] LIKE '%123%') 
   AND ([t0].[MDOCNUMBER] LIKE '%123%') 
   AND ([t0].[CLIENTINDICATOR] = 'ON')
Run Code Online (Sandbox Code Playgroud)

它还可以在"where"子句中使用较少的参数,例如:

SELECT TOP (10) 
       [t0].[CLIENTNUMBER], 
       [t0].[FIRSTNAME], 
       [t0].[LASTNAME], 
       [t0].[MI], 
       [t0].[MDOCNUMBER]
  FROM [dbo].[CLIENT] AS [t0]
 WHERE (LTRIM(RTRIM([t0].[DOCREVNO])) = '0') 
   AND ([t0].[FIRSTNAME] LIKE '%John%') 
   AND ([t0].[CLIENTINDICATOR] = 'ON')
Run Code Online (Sandbox Code Playgroud)

任何人都能说出优化此类查询性能的最佳方法是什么?也许我需要创建一个索引?该表在生产中最多可以有1000K记录.

sql sql-server sql-server-2005

3
推荐指数
1
解决办法
1万
查看次数