【发布时间】:2021-12-01 19:13:03
【问题描述】:
我有一个大型 T-SQL 存储过程,其中包含 3 个到 SELECT 语句的连接,这些语句查询作为参数传入的 XML 值。
参数如下所示:
@Code xml = NULL
连接看起来像这样:
AND (@Code IS NULL OR (t.Code IN (
select Tbl.Col.value('.[1]', 'nvarchar(2)')
from @Code.nodes('//codes/code') Tbl(Col)
)))
参数值的一个例子是:
'<codes><code>GB</code></codes>'
这些块中可能有多达 100 个 <code>...</code> 元素。
执行计划中显示的每个元素都显示Cost: 0 %,但这些连接除外,它们显示Cost: 49 %。
我可以做些什么来缩短执行时间?
【问题讨论】:
-
我建议你使用表值参数,它可能会表现更好
标签: tsql sql-server-2008 sqlxml