gpt4 book ai didi

SQL 在 SSRS 中运行缓慢,但在 SSMS 中运行速度快

转载 作者:行者123 更新时间:2023-12-04 15:44:33 25 4
gpt4 key购买 nike

我有这个查询:

Select 
'<ALL>' as name,
'<ALL>' as pid,
'<ALL>' as type
union all
Select distinct
instructor.name as name,
instructor.Pid as pid,
instructor_type as type
From sisinfo.dbo.SISCRSI instructor
inner join section_info as section
on section.sctn_id_code = instructor.sctn_id_code
Where section.sctn_term_code in (@Terms)
and section.subj_code in (@Subject)
order by name

当我在 SSMS 中运行它时,它几乎在零时间内完成。当我向它提供一些值时,它在 SSRS 查询设计器中也能快速运行。但是当我预览报告时,查询至少需要两分钟才能运行。我不确定这里发生了什么,我以前从未在 SSRS 上遇到过这种问题。

最佳答案

正如评论中所讨论的,让我们去掉参数,看看您的查询是否受到参数嗅探的影响。

为此,我们从头开始构建 SQL 语句。 SSRS 中的大部分内容都可以是包括 SQL 查询在内的表达式,因此您可以将其构建为字符串。使用参数,我们将使用 JOIN 将它们转换为逗号分隔的列表。 .

所以对于你的 SQL 语句,进入数据集属性对话框(不是查询编辑器)并按下 fx表达式编辑器按钮将查询表达式编辑为文本,并使其成为如下所示的表达式:

="Select '<ALL>' as name, '<ALL>' as pid, '<ALL>' as type "
&"union all "
&"Select distinct instructor.name as name, instructor.Pid as pid, instructor_type as type "
&"From sisinfo.dbo.SISCRSI instructor "
&"inner join section_info as section on section.sctn_id_code = instructor.sctn_id_code "
&"Where section.sctn_term_code in (" & Join(Parameters!Terms.Value, ",") & ") "
&"and section.subj_code in (" & Join(Parameters!Subject.Value, ",") & ") "
&"order by name "

我们在这里所做的是将 SQL 表达式转换为字符串,我们将多值参数作为字符串而不是参数提供,从而消除参数嗅探作为查询运行缓慢的原因。

如果您的查询在此之后很慢,您知道问题不是参数嗅探,但至少您将其视为原因。

关于SQL 在 SSRS 中运行缓慢,但在 SSMS 中运行速度快,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23963262/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com