回答

收藏

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

技术问答 技术问答 338 人阅读 | 0 人回复 | 2023-09-12

我有一个存储过程来搜索记录。
# W% R" \- g# b; I问题是来自UI有些搜索条件可能是空字符串。因此,当没有指定条件时,LIKE句子会变得多余。# |$ Q$ z, U0 Q& [
如何有效地执行搜索或搜索Sql Server?或者,它是否优化了,因为它意味着没有可比的内容LIKE(’%%’)查询?
, c# V6 @7 x' T& a7 X存储过程如下:
! P8 J. ]& B' f/ p9 b. P% S$ ~9 h+ Q& K# kALTER PROC [FRA].[MCC_SEARCH]@MCC_Code varchar(4),@MCC_Desc nvarchar(50),@Detail nvarchar(50)ASBEGIN                    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_CodeEND                ( w. d' [5 A! H) e' ^9 C
    解决方案:                                                                & U8 f5 n2 W- A4 a+ o1 g& d# ~* `2 @
                                                                简短的答案是-     长答案是- 绝对不是
/ B4 w3 U  }" `$ p5 j6 k, L是否优化LIKE(’%%’)查询,因为这意味着没有可比的内容?
4 H, |" A- T/ Z0 c$ ^) x' g! @; M该声明是 不真实的    ,因为那里 的    东西比较。以下是等效的
0 N4 V' M: K' X" \$ |; Y0 ~WHERE column LIKE '%%'WHERE column IS NOT NULLIS NOT NULL要求扫描表格,除非列中的非非null值很少,索引正确。3 t' G0 C$ e! F
编辑资源动态搜索程序在SQL Server:2 L+ j! |7 i1 f; {, N
您只需 必须    阅读本文的厄兰Sommarskog,SQL服务器MVP http://www.sommarskog.se/dyn-
8 ?2 r1 W' N+ J& I8 V6 I& {) `search.html(选择你的版本,或同时读取)4 I" V( U+ _! D5 i- [* v
否则,如有必要CONTAINS请考虑样式搜索的良好性能SQL Server全文引擎。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则