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

2024-03-23

我有一个存储过程,它对记录执行搜索。

问题是一些来自 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

关于最佳的、使用索引的执行计划 - 不。前缀通配符会阻止使用索引,从而导致扫描。

如果您的搜索词末尾也没有通配符,那么可以优化该场景 - 我不久前在博客中发表过:优化通配符前缀 LIKE 条件 http://www.adathedev.co.uk/2010/05/optimising-like-conditions-with.html

Update
为了澄清我的观点:
LIKE 'Something%' - 能够使用索引
LIKE '%Something' - 无法使用开箱即用的索引。但是您可以对其进行优化,以允许它通过遵循我链接到的“REVERSE technology”来使用索引。
LIKE '%Something%' - 无法使用索引。您无法对 LIKE 进行优化。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server 是否优化 LIKE ('%%') 查询? 的相关文章

  • 通过 SQL Developer 连接时出现 ora-12505 错误

    我正在尝试使用 SQL Developer 远程连接到 Oracle 12c 数据库 为了从另一台计算机进行远程连接 我在运行 Oracle 的计算机上在 Windows 7 防火墙中打开了一个端口 该部分有效 但现在由于此错误 ORA 1
  • 在 SQL 中查找日期范围重叠的记录

    我有以下表格和数据 CREATE TABLE customer wer id customer NUMBER name VARCHAR2 10 surname VARCHAR2 20 date from DATE date to DATE
  • 允许远程连接到不同域中的 SQL Server 的防火墙规则

    我最近安装了SQL Server Express 2014在一系列运行 Windows Server 2012 的计算机上 总共七台计算机 除 1 人外 其余所有人都住在同一个地方local domain company local 一台流
  • 计算 SQL Server 存储过程中删除的行数

    在 SQL Server 2005 中 有没有一种方法可以删除行并告知有多少行actually删除了 我可以做一个select count 条件相同 但我需要它完全值得信赖 我的第一个猜测是使用 ROWCOUNT变量 但尚未设置 例如 de
  • Linux命令:如何仅“查找”文本文件?

    经过几次谷歌搜索后 我得出的结论是 find my folder type f exec grep l needle text exec file grep text 这非常不方便 并且会输出不需要的文本 例如 mime 类型信息 还有更好
  • 您能否推荐一个 JQuery 插件来组成一组可映射到 SQL 查询的条件? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我发现了http redquerybuilder appspot com http redquerybu
  • 如何使用 ORACLE SQL 从 XML 中单独提取可重复的 json 节点值?

    我有以下 XML 我想提取 json 参数 serviceNumber 的值分别地我尝试使用 EXTRACT 函数 但我得到了连接的结果 但我希望将它们分开
  • TSQL 检索当月/当年的所有记录

    我有一个名为 DateFinished 的日期时间字段 我需要能够检索 DateFinished 在当前月份 年份内的所有记录 如果您只有少量行 这将可以获取所有行DateFinished就在今年这个月 SELECT FROM MyTabl
  • T-SQL 跳过获取存储过程

    我在这个网站上似乎运气不太好 但我仍然是个乐观主义者 我会继续努力 我有两个表 期刊和文章类别 使用此查询连接 SELECT Journals JournalId Journals Year Journals Title ArticleCa
  • 带有mysql的实体框架,linux和windows之间的表大小写问题

    我们目前正在开发一个使用 Code First Entity Framework 和 Mysql 的产品 开发数据库托管在 Windows 环境中 而生产 mysql 则托管在 Linux 环境中 我遇到的问题是 mysql 中的表命名如下
  • 无法使用 LISTAGG

    SELECT deptno LISTAGG ename WITHIN GROUP ORDER BY ename AS employees FROM emp GROUP BY deptno Error ORA 00923 FROM keywo
  • pyodbc 返回的行不可 JSON 序列化

    我正在尝试使用 Python 中的 pyodbc 库检索表的行 我能够成功检索表和表的字段 现在我有一个名为 apx roomtypes 的表 其数据如下 但是 当我将 pyodbc 行附加到列表 然后尝试将列表转储到 JSON 时 出现错
  • 尝试使用 Redshift SQL 对累积不同实体进行计数

    我正在尝试获取某个时间序列中 Redshift 中不同对象的累积计数 最简单的事情就是使用COUNT DISTINCT myfield OVER ORDER BY timefield DESC ROWS UNBOUNDED PRECEDIN
  • Android 上的查询何时返回 Null?

    我似乎没有找到任何有关查询 插入或任何其他返回 null 的 SQL 方法的信息 但如果发生错误 它就会发生 我只是想知道游标为空是否意味着发生了错误 或者是否意味着没有选择任何行 例如 我不知道应该如何对待它 作为一个错误或可能不时发生的
  • 在 Presto 中将 array(double) 转换为 varchar

    我正在尝试将 Array double 转换为 Presto 中的 varchar 样本值 99 0 98 0 99 0 95 0 99 0 88 0 90 0 79 0 90 0 56 0 90 0 90 0 92 0 90 0 93 0
  • 发生错误:“无法调用 nvarchar 上的方法。”

    我编写了一个查询来查找与特定问题相关的答案 但在运行此代码时收到此错误 无法调用 nvarchar 上的方法 select Posts Id as Answer ParentId as question User DisplayName a
  • 输出参数有什么问题?

    在 SQL 和 C 中 我从来都不太喜欢输出参数 我也从未在 VB6 中通过 ByRef 传递参数 依靠副作用来完成某件事只会让我烦恼 我知道它们是一种解决无法从函数返回多个结果的方法 但 SQL 中的行集或 C 和 VB 中的复杂数据类型
  • 查找包含具有指定名称的列的所有表 - MS SQL Server

    想要改进这篇文章吗 提供此问题的详细答案 包括引用和解释为什么你的答案是正确的 不够详细的答案可能会被编辑或删除 是否可以查询包含以下列的表名 LIKE myName 搜索表 SELECT c name AS ColumnName SCHE
  • 将 SQL 依赖关系与 Azure 结合使用

    在我的本地数据库中 Sql 依赖关系工作正常 但是当我迁移到 Azure 数据库时 它就不起作用了 我检查服务代理是否已启用 并且它已激活 这是错误 此版本的 SQL Server 不支持语句 RECEIVE MSG 这是我的代码 publ
  • 插入到表中并在 SQL 中拆分字符串

    我想将分割字符串插入到我的表中 如您所见 create table Organization organizationId bigint provienceId bigint CityId bigint TownId bigint Inse

随机推荐

  • Python - 读取 Emoji Unicode 字符

    我有一个 Python 2 7 程序 它从 SQLite 数据库读取 iOS 文本消息 文本消息是 unicode 字符串 在下面的短信中 u that u2019s U0001f63b 撇号表示为 u2019 但表情符号由 U0001f6
  • 具有 GIT 支持的 PL/SQL IDE

    我目前正在为我的公司开发 PL SQL 存储过程 我想使用代码修订控制系统来跟踪我和其他开发人员所做的更改 我喜欢 GIT 的所有优点 包括分布式 scm 功能 有没有支持GIT的PL SQL开发IDE 目前 我正在使用 JDevelope
  • 从 C# 调用非托管函数:我应该传递 StringBuilder 还是使用不安全代码?

    我有一个 C 程序 需要将字符缓冲区传递给非托管函数 我发现了两种似乎可靠的方法 但我不确定应该选择哪一种 这是非托管函数的签名 extern C declspec dllexport int getNextResponse char bu
  • 关于 C++ 中异常的缺点

    我正在阅读 Google C 风格指南 并在其中感到困惑例外情况 http google styleguide googlecode com svn trunk cppguide xml showone Exceptions Excepti
  • XPath 中“//”和“/”的区别?

    我正在尝试使用 python selenium 的 XPath I used 这个链接 http www jetairways com EN SG Home aspx尝试教程中的一些 XPath 所以我尝试了 XPath 的这两种变体 这个
  • Vuejs 刷新时路由重定向

    当我在浏览器中使用刷新按钮或点击f5在键盘上 它不会刷新我的页面 而是重定向到主页 Code router js import Vue from vue import VueRouter from vue router import sto
  • 接口依赖关系[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当您创建一个接口并且知道您将依赖另一个接口时 您是否会将构造函数作为接口的一部分 就我而言 我想创建 我可以向客户端提供一个 IClientRe
  • 伊莎贝尔案例分析

    如何在伊莎贝尔中应用案例分析 我正在寻找类似的东西apply induct x 用于归纳 案例分析通常是通过cases方法 另见索引中的 案例 方法 伊莎贝尔 伊萨尔参考手册 http isabelle in tum de website
  • 使用 grep 列出目录中的条目

    我试图列出目录中名称仅包含大写字母的所有条目 目录需要附加 bin bash cd testfiles ls grep r 由于 grep 默认情况下仅查找大写字母 对吗 因此我只是在 testfiles 下的目录中递归搜索仅包含大写字母的
  • 将 nlog 中的记录添加到 dataType = date 的字段

    I use nlogdll 写入数据库 Oracle 与实体框架在行中 logger Log logLevel try 我在 nlog 日志中收到以下错误 文字与模板字符串不匹配 代码是 SetPropGDC LogEntity NLog
  • 在 Windows 上使用 Xerces 3.0.1 和 C++ 编写 XML

    我编写了以下函数来使用 Xerces 3 0 1 创建 XML 文件 如果我使用 foo xml 或 foo xml 的文件路径调用此函数 它会很好用 但如果我传入 c foo xml 然后我在这一行得到一个异常 XMLFormatTarg
  • C#通过OLEDB从Excel中提取格式化文本

    我正在从一个大的数据中读取数据excel已格式化文本的文件 我将数据提取到DataTable对象通过oleDBConnection GetOleDbSchemaTable 但提取的数据不包含任何格式化信息 我的要求是 我只需要提取非删除线文
  • 如何使用 Android Gradle 插件 0.7 配置 NDK

    新的 Android gradle 插件 0 7 似乎包含了对 NDK 的新支持 但在文档中几乎没有提到它 我找到的唯一参考是一个名为ndkSanAngeles https android googlesource com platform
  • 优化 Excel 公式 - SUMPRODUCT 与 SUMIFS/COUNTIFS

    根据一些网站的说法 SUMIFS 和 COUNTIFS 比 SUMPRODUCT 更快 例如 http exceluser com blog 483 excels sumifs or sumproduct which is faster h
  • 用于提供静态内容的 Servlet

    我在两个不同的容器 Tomcat 和 Jetty 上部署了一个 web 应用程序 但它们用于提供静态内容的默认 servlet 有不同的方式来处理我想要使用的 URL 结构 details http issues apache org bu
  • 除主活动外,其他活动中没有应用栏和抽屉

    主要活动 public class MainActivity extends AppCompatActivity Override protected void onCreate Bundle savedInstanceState supe
  • 何时使用 Dart 中的接口?

    我正在阅读 Dart 的文档 对于如何使用接口 我有点困惑 也许是因为我来自 Ruby 当然 接口并不是 Dart 所独有的 关于何时应该使用接口有很多解释 This one https stackoverflow com question
  • Web 开发 - 对象数据库与关系数据库

    使用对象数据库或关系数据库进行涉及大量 CRUD 的常规 Web 开发有何优缺点 更新 我重新打开了赏金奖励 以便给内维尔 OODBMS 的概念已经被打破 过去几十年中出现的各种商业和免费产品几乎没有在市场上产生影响 就您可以向数据提出的问
  • 无法从 Play 商店生产区域停用 Android 分阶段推出应用程序

    我们将一款 Android 应用上传到 Play 商店 分阶段向 5 的市场推出 不确定谷歌在这里如何定义市场 但这是另一个问题 我们决定删除该应用程序并恢复之前发布的应用程序 然而 这似乎是不可能做到的 当我在开发人员控制台上切换到高级模
  • SQL Server 是否优化 LIKE ('%%') 查询?

    我有一个存储过程 它对记录执行搜索 问题是一些来自 UI 的搜索条件可能是空字符串 因此 当未指定条件时 LIKE 语句就变得多余 如何有效地执行该搜索或 Sql Server 或者 它是否优化 LIKE 查询 因为这意味着没有什么可比较的