“KM”的答案就其本身而言是好的,但未能完全贯彻他早期的一条建议;.忽略紧凑型代码,忽略对重复代码的担忧.

如果您希望获得最佳的性能,那么您应该为每个可选条件的组合编写一个定制查询。这听起来可能很极端,如果你有很多可选的标准,那么它可能是,但性能往往是努力和结果之间的权衡。在实践中,可能有一组通用的参数组合,这些组合可以通过定制查询进行目标,然后是针对所有其他组合的通用查询(与其他答案一样)。CREATE PROCEDURE spDoSearch    @FirstName varchar(25) = null,

@LastName varchar(25) = null,

@Title varchar(25) = nullASBEGIN

IF (@FirstName IS NOT NULL AND @LastName IS NULL AND @Title IS NULL)

-- Search by first name only

SELECT ID, FirstName, LastName, Title        FROM tblUsers        WHERE

FirstName = @FirstName    ELSE IF (@FirstName IS NULL AND @LastName IS NOT NULL AND @Title IS NULL)

-- Search by last name only

SELECT ID, FirstName, LastName, Title        FROM tblUsers        WHERE

LastName = @LastName    ELSE IF (@FirstName IS NULL AND @LastName IS NULL AND @Title IS NOT NULL)

-- Search by title only

SELECT ID, FirstName, LastName, Title        FROM tblUsers        WHERE

Title = @Title    ELSE IF (@FirstName IS NOT NULL AND @LastName IS NOT NULL AND @Title IS NULL)

-- Search by first and last name

SELECT ID, FirstName, LastName, Title        FROM tblUsers        WHERE

FirstName = @FirstName            AND LastName = @LastName    ELSE

-- Search by any other combination

SELECT ID, FirstName, LastName, Title        FROM tblUsers        WHERE

(@FirstName IS NULL OR (FirstName = @FirstName))

AND (@LastName  IS NULL OR (LastName  = @LastName ))

AND (@Title     IS NULL OR (Title     = @Title    ))END

这种方法的优点是,在定制查询处理的常见情况下,查询是尽可能高效的-不受未提供的标准的影响。此外,索引和其他性能增强可以针对特定的定制查询,而不是试图满足所有可能的情况。

mysql存储过程参数可选,如何在T-SQL存储过程中使用可选参数?相关推荐

  1. JDBC 存储过程(使用java代码编写sql 存储过程)

    1.定义一个存储过程(不带参数) 使用sql语句定义一个存储过程挺简单的,参考这一篇博文https://blog.csdn.net/qq_44973159/article/details/914919 ...

  2. delphi 异步 调用 带参数_如何在 Spring 异步调用中传递上下文

    什么是异步调用? 异步调用是相对于同步调用而言的,同步调用是指程序按预定顺序一步步执行,每一步必须等到上一步执行完后才能执行,异步调用则无需等待上一步程序执行完即可执行.异步调用指,在程序在执行时,无 ...

  3. c# mysql 触发器 实时,C#-.Net SqlDataAdapter和SQL Server中的触发器

    我在SQL Server中使用触发器,该触发器在SQL Server Management Studio的查询窗口中执行查询时按要求工作.触发器的目的是从一个表中获取最新值(其中一个ID对应于插入的I ...

  4. MySQL删除s表命令_SQLServer数据库sql语句中----删除表数据drop、truncate和delete的用法...

    本文主要向大家介绍了SQLServer数据库sql语句中----删除表数据drop.truncate和delete的用法,通过具体的内容向大家展现,希望对大家学习SQLServer数据库有所帮助. 虽 ...

  5. mySQL MAX与sum 连用_mysql – 在sql脚本中一起使用sum和max

    我已经更新了查询,但现在出现的错误是:SQL语法中有错误;检查与您的 MySQL服务器版本对应的手册,以便在'AS max_parameter_value附近使用正确的语法 来自第7行的tcs.par ...

  6. mysql 平均日营业额_一条SQL语句中算日销售额和月销售额

    刚刚做项目的时候用到的 用户表:用户ID,用户名,余额 流水表:时间,用户ID,用户名,类型(0充值,1消费),变更金额 现在要查每个用户的日销售额和月销售额,本来最简单的方法是先把所有用户查出来,然 ...

  7. mysql查询学号和姓名_数据库SQL语句中 查询选修了全部课程的学生的学号和姓名...

    一.SQL语言查询选修了全部课程的学生的学号和姓名. 两种解决途径: 第一种: 我们可以表示为在SC表中某个学生选修的课程数等于C表中课程总数.相应的SQL语言如下: selectS#,SNAMEfr ...

  8. python ssl recv参数_如何在paramiko.recv函数中接收大输出?

    我需要从paramiko中的.recv函数接收完整的输出.我试图增加nbyte数,但在我看来,我认为这不是正确的方法.脚本的主要用途是在同一会话中自动列出命令. 我这里的主要问题是我不能从shell接 ...

  9. python函数如何实现可变参数_【已解决】Python中实现可变参数的函数

    [问题] Python中,希望实现一个可变参数的函数. [解决过程] 相关代码如下:(extractOK, extractedBlogUser, generatedBlogEntryUrl) = ca ...

  10. Java请求参数检查,Java如何检查servlet请求中是否存在参数?

    ServletRequest或HttpServletRequest对象具有用于映射参数名称及其值的映射对象.通过访问此映射,我们可以检查servlet请求中是否传递了参数.让我们看下面的例子.pack ...

最新文章

  1. Learn OpenGL (九):基础光照
  2. win10解决Mysql net start mysql启动,提示发生系统错误 5 拒绝访问
  3. Linux网络DNS配置反向解析与构建主从域名服务器
  4. 计算机无线局域网毕业论文,谈教学设计《计算机网络》网络课程“无线局域网”单元的设计与开发大专毕业论文范文...
  5. 不知道的,还以为是555牌香烟
  6. tracepro杂散光分析例子_光学系统杂散光分析(1)
  7. 使用 powershell 的 grep 过滤文本
  8. 十大关键词,看2022元宇宙的落地应用
  9. FreeCAD 扫掠空间曲线
  10. 【FPGA目标跟踪】基于FPGA的帧差法和SAD匹配算法的目标跟踪实现
  11. ESXI7.0与6.7官网下载地址
  12. linux虚拟内存设置为多少合适,虚拟内存怎么设置最好_虚拟内存设置多少合适
  13. 【深度】“考上北大,我们也和那几亿的农民工人互为镜像”
  14. QQ被盗的自救、事故分析
  15. ldb文件matlab,MongoDB v4.2.2 安装与配置及常规操作
  16. RSA加密算法(32bit比特级运算)(复杂版)(C++实现)
  17. 我的世界服务器拔刀修复,我的世界拔刀剑怎么修复武器攻略分享
  18. 客户端监控要怎么做?
  19. 【java】tomcat配置域名访问并修改端口号
  20. 关于自制CMSIS_DAP离线下载器下载算法的代码说明:“0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA“

热门文章

  1. TVM在ARM GPU上优化移动深度学习
  2. 激光雷达数据到云cloud
  3. CentOs7中安装python3.7.6
  4. CentOS7环境搭建使用PhpStorm上传代码
  5. Android webview 加载的html 无法显示弹框
  6. svn: Working copy locked
  7. Android 项目版本的修改
  8. react 子组件获取变量属性值
  9. MySQL数据库开发常见问题及几点优化!
  10. HTML5调用手机的Datepicker(日期选择器)