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全文引擎。 |
|
|
|
|
|