0
引用 http://www.brentozar.com/archive/2013/06/the-elephant-and-the-mouse-or-parameter-sniffing-in-sql-server/
执行下面的query。第一次执行的query plan会被cache起来,并被第二个query引用。问题也就出在第二次query上面。可以从IO 和执行计划上面看出,SQL SERVER使用了一个不是很好,有时候可能会使很糟糕的执行计划。IO从之前的10跑到了1246,看执行计划也会发现,预估的是返回4688条记录,实际上只有2条记录,相差太大了。
Posted on
Monday, January 04, 2016
by
醉·醉·鱼
and labeled under
sql
引用 http://www.brentozar.com/archive/2013/06/the-elephant-and-the-mouse-or-parameter-sniffing-in-sql-server/
什么是parameter sniffing
来看个例子。
CREATE PROCEDURE Get_OrderID_OrderQty
@ProductID INT
AS
SELECT SalesOrderDetailID, OrderQty
FROM Sales.SalesOrderDetail
WHERE ProductID = @ProductID;
执行下面的query。第一次执行的query plan会被cache起来,并被第二个query引用。问题也就出在第二次query上面。可以从IO 和执行计划上面看出,SQL SERVER使用了一个不是很好,有时候可能会使很糟糕的执行计划。IO从之前的10跑到了1246,看执行计划也会发现,预估的是返回4688条记录,实际上只有2条记录,相差太大了。
Post a Comment