我已经遇到这个问题几个星期了。问题是查询在网站上运行需要 4-5 分钟,而在 ssms 中运行最多需要 2 或 3 秒。我还发现,在我对这个查询进行更改(例如添加 customerId 变量)后,它将开始在网页上快速运行,但到第二天它又变慢了。有问题的查询是这样的:
DECLARE @customerID INT
SET @customerID = @CustID
DECLARE @MyTable table(
Iden int NOT NULL IDENTITY(1,1),
ProductID int)
INSERT INTO @MyTable(ProductID)
SELECT P.ProductID FROM Product P WITH (NOLOCK)
left join Compunix_ProductMMY cpmmy with (nolock) on p.ProductID = cpmmy.ProductID
left join Compunix_CustomerMMY ccmmy with (nolock) on ccmmy.mmyid = cpmmy.mmyid
WHERE P.Deleted=0 AND P.Published=1 and (ccmmy.customerid = @customerID OR cpmmy.productid IS NULL)
SELECT c.Name, c.SeName, c.CategoryID
FROM Category c WITH (NOLOCK)
JOIN ProductCategory PC With (NOLOCK) ON C.CategoryID = PC.CategoryID
JOIN @MyTable MT ON PC.ProductID=MT.ProductID
WHERE C.Published = 1
GROUP BY c.Name, c.SeName, c.CategoryID
ORDER BY c.Name
我在其他 2 个站点上运行了相同的查询,它们运行良好。站点之间的唯一区别是它们运行在不同的数据库上,与其他两个站点相比,慢速站点上的产品(54000 个产品)多出一倍多。所有三个站点及其数据库都托管在同一台机器上.
最佳答案
您可能会遇到参数嗅探的问题。
我建议阅读 Slow in the Application, Fast in SSMS?作者 Erland Sommarskog 以全面了解该问题(文章很长但非常好)。
关于sql 在 ssms 中运行快在 asp.net 中慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10175422/