2つのストアドプロシージャがあり、2番目のストアドプロシージャは最初のストアドプロシージャの改良版です。
どれだけ改善されているかを正確に測定しようとしています。
1 / clock time
実行時間が異なるため、測定はオプションではないようです。さらに悪いことには、2番目のストアドプロシージャの実行時間が、2番目のストアドプロシージャの実行時間よりも長い場合があります(まれに起こります)(その瞬間のサーバーのワークロードによると思います)。
2 / Include client statistics
は、異なる結果も提供します。
3 / DBCC DROPCLEANBUFFERS
、DBCC FREEPROCCACHE
良いですが、同じ話...
4 / SET STATISTICS IO ON
はオプションかもしれませんが、ストアドプロシージャに多くのテーブルが関係しているので、どうすれば総合スコアを取得できますか?
5 / Include actual execution plan
もオプションです。estimated subtreecost
最初のストアドプロシージャで0.3253を取得し、2番目のストアドプロシージャで0.3079 を取得します。2番目のストアドプロシージャは6%高速(= 0.3253 / 0.3079)と言えますか?
6 / SQL Server Profilerの「読み取り」フィールドを使用していますか?
では、実行条件(サーバーのワークロード、これらのストアドプロシージャが実行されるサーバーなど)に関係なく、2番目のストアドプロシージャが最初のプロシージャよりもx%高速であると言えますか?
それが不可能な場合、2番目のストアドプロシージャの実行時間が最初のストアドプロシージャよりも優れていることをどのように証明できますか?