1

ストアド プロシージャを複数回実行できますが、キャッシュにヒットしません: (1665ms は期間列です)

ここに画像を入力

しかし、何も変更せずにストアド プロシージャを変更すると: (240ms は期間列です)

ここに画像の説明を入力

問題: ストアド プロシージャを常に高速にする方法 (2 回目以降の呼び出しで)

4

2 に答える 2

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エディションに対して。

于 2013-07-17T09:56:45.417 に答える