【发布时间】:2015-04-09 13:04:56
【问题描述】:
我在查询时遇到性能问题,我不知道为什么会这样。 此查询是通过存储过程调用的,但作为测试问题,两种执行方式(T-SQL 或 St. Proc)都会出现问题。 我在 VIEW 上执行 SELECT 语句,使用参数来定义结果集。参数@coligada 表示附属公司ID。 是这样的:
DECLARE @coligada INT
SET @coligada = 1
SELECT id1, id2, code1, code2, code3, date, value1, name1, name2
FROM view_financialcube
WHERE
coligada = @coligada
AND date >= DATEADD(d,1,dbo.function_LastWorkingDay('01/01/2014'))
AND date <= DATEADD(m,1,'01/01/2014')
AND userid = 'elida'
所以当我执行时,查询会持续几分钟(当它达到 10 分钟时我没有等待结束..)
然后,我尝试了相同的查询,这次没有传递 coligada 作为参数:
SELECT id1, id2, code1, code2, code3, date, value1, name1, name2
FROM view_financialcube
WHERE
coligada = 1
AND date >= DATEADD(d,1,dbo.function_LastWorkingDay('01/01/2014'))
AND date <= DATEADD(m,1,'01/01/2014')
AND userid = 'elida'
这个执行只用了 5 秒。
因为这个语句根据coligada作为参数在不同的情况下被调用,所以我需要理解为什么需要这么长时间,并解决它。
有人有提示吗?
非常感谢!
艾莉达
【问题讨论】:
标签: sql-server performance view parameter-passing