SqlServer 函数Declare通过传变量查询超慢解决办法

SqlServer 函数Declare通过传变量查询超慢解决办法from参考:1,Declare传参查询速度慢,直接放入参数执行sql却快,求大牛给原因2,OPTION(RECOMPILE)提高带参数执行SQL语句的索引效率 遇到的问题:通过参数执行sql函数查询速度超慢示例示例代码:class=”lang:tsqldecode:true”>declare@prefixnvarchar(10)=’095-0021-‘;…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

from

参考:

1,Declare传参查询速度慢,直接放入参数执行sql却快,求大牛给原因

2,OPTION(RECOMPILE)提高带参数执行SQL语句的索引效率

 

遇到的问题:通过参数执行sql函数查询速度超慢

示例示例代码:

class="lang:tsql decode:true">declare @prefix nvarchar(10) = '095-0021-' ;
declare @serialLength int  = 4  ;
declare @remainedLength int = 1;

--1,直接传值,速度很快 
select * from  [dbo].[f_getPartSerialNo]('095-0021-',4,1)
--2,传变量,速度超慢
select * from  [dbo].[f_getPartSerialNo]( @prefix , @serialLength  , @remainedLength  )
--3,使用OPTION(RECOMPILE)解决2速度慢问题。执行速度同1
select  * from dbo.[f_getPartSerialNo]( @prefix , @serialLength  , @remainedLength  ) OPTION(RECOMPILE)

--:f_getPartSerialNo
CREATE FUNCTION [dbo].[f_getPartSerialNo]
(	
	-- Add the parameters for the function here
	@prefix varchar(40),
	@serialLength int, 
	@remainedLength int
)
RETURNS TABLE 
AS
RETURN 
(
	SELECT MIN(LX_IMA01) AS LX_IMA01
	FROM (
		SELECT PART_POOL.LX_IMA01, PART.LX_IMA01 AS IMA001
		FROM (
			SELECT @prefix + NUM AS LX_IMA01
			FROM NUMPOOL
			WHERE SerialLength = @serialLength
		) PART_POOL
		LEFT JOIN (
			SELECT lx_ima01
			FROM innovator.PART
			WHERE PART.LX_IMA01 LIKE @prefix+'%'
				AND IS_CURRENT = '1'
		) Part
		ON PART_POOL.LX_IMA01 = SUBSTRING(PART.LX_IMA01, 1, LEN(PART.LX_IMA01) - @remainedLength)
) X
WHERE IMA001 IS NULL
)
GO

3种查询执行计划:

1,传值:链接

2,传参

在这里插入图片描述

3,使用OPTION(RECOMPILE),执行计划与传值一致。
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/171401.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • openstack介绍_openstack开发

    openstack介绍_openstack开发什么是云计算最早提出来是亚马逊公司,发家是靠卖书,最后自己把自己卖书的业务移到互联网上,随着自己公司业务的增加,自己公司内部服务器就不够用了,慢慢就开始做虚拟化,做了虚拟化之后,随着公司组织架构的复

    2022年8月2日
    7
  • oracle如何查看视图语句_oracle视图使用

    oracle如何查看视图语句_oracle视图使用手机评站网今天精心准备的是《oracle视图》,下面是详解!怎么在oracle中查询出所有的视图view?1、通过pl/sql,登录oracle数据库,2、敲入sql,可以查询本库的所有视图view,select*fromall_viewst,结果中owner代表不同的用户;3、如果查看本用户的所有视图view,执行sql,select*fromuser_viewst,可以看到本用…

    2025年8月25日
    6
  • siamfc代码解读_siamfc-pytorch代码讲解(一):backbone&head

    siamfc代码解读_siamfc-pytorch代码讲解(一):backbone&head最近才真正开始研究目标跟踪领域(好吧,是真的慢)。就先看了一篇论文:Fully-ConvolutionalSiameseNetworksforObjectTracking【ECCV2016workshop】又因为学的是PyTorch框架,所以找了一份比较clean的代码,还是pytorch1.0的:https://github.com/huanglianghua/siamfc-pyto…

    2022年10月1日
    4
  • autocad二次开发资料总结

    autocad二次开发资料总结autocad二次开发AutoCAD(AutoComputerAidedDesign)是美国Autodesk公司研制开发的一款计算机辅助设计软件,它不是一款简单的绘图工具,而是一个复杂的计算机辅助设计系统。我们可以根据他灵活的开放性对其进行二次开发定制,让它更加适用于某一具体的设计领域。中文名AutoCAD二次开发外文名AutoCADDevelopmentSyst

    2025年8月14日
    3
  • Linux gzip 压缩/解压 详解[通俗易懂]

    gzip是linux中常见的压缩/解压工具,最常见的使用对象是*.gz格式的文件,这里简单介绍下它最常见的用法,GZIP(1)GeneralCommandsManualGZIP(1)NAMEgzip,gunzip,zcat-compressorexpandfilesSYNOPSISgzip[-acdfhklLnNrtvV19][–rsyncable][-Ssuffix][name…]gunzip[-acfh…

    2022年4月4日
    69
  • 2015届校园招聘笔试/面试 基础知识点 总结

    2015届校园招聘笔试/面试 基础知识点 总结

    2022年1月28日
    40

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号