ストアド プロシージャを複数回実行できますが、キャッシュにヒットしません: (1665ms は期間列です)
しかし、何も変更せずにストアド プロシージャを変更すると: (240ms は期間列です)
問題: ストアド プロシージャを常に高速にする方法 (2 回目以降の呼び出しで)
ストアド プロシージャを複数回実行できますが、キャッシュにヒットしません: (1665ms は期間列です)
しかし、何も変更せずにストアド プロシージャを変更すると: (240ms は期間列です)
問題: ストアド プロシージャを常に高速にする方法 (2 回目以降の呼び出しで)
掘り下げて、最初に(再起動後)SPを呼び出したときに、アプリケーションIDがNULLであることがわかりました
exec [dbo].[usp_Tab32] @responsibleReviewerID=1135,@applicationID=NULL,@environment=1,@userUIStatus=0,@roleID=NULL
次に、より限定されたクエリを使用します。
exec [dbo].[usp_Tab32] @responsibleReviewerID=1135、@applicationID=1406、@environment=1、@userUIStatus=0、@roleID=NULL
これは遅いでしょう。
ただし、より限定されたクエリを最初にヒットすると、両方とも高速になります。
データベース プラン キャッシュをクリアするには、次の手順を実行します。
DECLARE @dbId INTEGER
SELECT @dbId = dbid FROM master.dbo.sysdatabases WHERE name = ‘myDatabase’
DBCC FLUSHPROCINDB (@dbId)
詳細はこちら
すべてSQL2012 Developerエディションに対して。