带有参数的SQL Server性能问题
SQL查询存在性能问题。 这是我的问题带有参数的SQL Server性能问题,sql,sql-server-2005,Sql,Sql Server 2005,SQL查询存在性能问题。 这是我的问题 declare @siteId int, @totalCount int SELECT @totalCount = COUNT(DISTINCT pro.product_id) FROM product AS pro INNER JOIN product_to_category AS proCat ON pro.product_id = proCat.product_id INNER JOIN product_to_v
declare @siteId int,
@totalCount int
SELECT @totalCount = COUNT(DISTINCT pro.product_id)
FROM product AS pro
INNER JOIN product_to_category AS proCat ON pro.product_id = proCat.product_id
INNER JOIN product_to_vendor proVen ON pro.product_id = proVen.product_id
WHERE pro.site_id = @siteId
AND pro.product_type <> 3
print @totalCount
declare@siteId int,
@总计数整数
选择@totalCount=COUNT(不同的专业产品标识)
从产品到专业
在pro.product\u id=proCat.product\u id上以proCat的形式将产品\u内部连接到\u类别
内部连接产品到供应商在pro.product\u id=proVen.product\u id上经过验证
其中pro.site_id=@siteId
和pro.product_类型3
打印@totalCount
执行需要6秒钟
当我删除参数时,如下所示
@totalCount int
SELECT @totalCount = COUNT(DISTINCT pro.product_id)
FROM product AS pro
INNER JOIN product_to_category AS proCat ON pro.product_id = proCat.product_id
INNER JOIN product_to_vendor proVen ON pro.product_id = proVen.product_id
WHERE pro.site_id = 28
AND pro.product_type <> 3
print @totalCount
@totalCount int
选择@totalCount=COUNT(不同的专业产品标识)
从产品到专业
在pro.product\u id=proCat.product\u id上以proCat的形式将产品\u内部连接到\u类别
内部连接产品到供应商在pro.product\u id=proVen.product\u id上经过验证
其中pro.site_id=28
和pro.product_类型3
打印@totalCount
再次执行查询,只需2秒钟
有没有一种方法可以提高这样一个查询的性能?
为什么给参数赋值需要时间?
任何注释……这不是一个参数,而是一个变量 SQL Server不会嗅探变量的值,因此在编译时不知道它将包含的值是
28
将
选项(重新编译)
添加到查询的末尾,使其在变量赋值后重新编译语句,并生成更合适的执行计划。您的表上有索引吗?@Tharaka,在运行硬编码版本后,是否立即尝试重新运行查询的参数化版本?如果是这样,需要多长时间?我已经尝试了选项(重新编译)。它适用于子存储过程,但不适用于嵌套存储过程。还有其他解决方案吗?您可以将其添加到查询的末尾。。。其中pro.site\u id=@siteId和pro.product\u类型3选项(重新编译)