SQL查询存在性能问题。 这是我的查询带参数的SQL Server性能问题
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
这是需要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
,并再次执行查询时,只需要2秒钟。
有没有一种方法来提高这样的查询性能? 为什么需要花时间为参数赋值? 有任何意见....
你有什么索引在你的表上? – Taryn
@Tharaka,您是否尝试在运行硬编码版本后立即重新运行查询的参数化版本?如果是这样,需要多长时间? –
是product.site_id int? – gbn