Microsoft SQL Server では、「最悪の」ストアド プロシージャを見つける方法が複数あると聞きました。実行回数、CPU ワーカー時間、キュー待機時間などです。
最悪の (最も遅い/最も使用されている) UDF を見つける方法を探しています -- そのための DMV クエリはありますか?
たとえば、あなたをスーパーヒーローにする 5 つの DMV クエリのこのクエリは、合計ワーカー時間で上位 25 のキャッシュされた SP を返します。
UDF に対してこのようなものを記述するにはどうすればよいですか?
SELECT TOP(25) p.name AS [SP Name], qs.total_worker_time AS [TotalWorkerTime],
qs.total_worker_time/qs.execution_count AS [AvgWorkerTime], qs.execution_count,
ISNULL(qs.execution_count/DATEDIFF(Second, qs.cached_time, GETDATE()), 0) AS [Calls/Second],
qs.total_elapsed_time, qs.total_elapsed_time/qs.execution_count
AS [avg_elapsed_time], qs.cached_time
FROM sys.procedures AS p
INNER JOIN sys.dm_exec_procedure_stats AS qs
ON p.[object_id] = qs.[object_id]
WHERE qs.database_id = DB_ID()
ORDER BY qs.total_worker_time DESC OPTION (RECOMPILE);