Eu tenho 2 procedimentos armazenados, onde o segundo procedimento armazenado é uma melhoria do primeiro.
Estou tentando medir exatamente o quanto isso é uma melhoria.
Medir
clock time
não parece ser uma opção, pois recebo tempos de execução diferentes. Pior ainda, às vezes (raramente, mas acontece) o tempo de execução do segundo procedimento armazenado é maior que o tempo de execução do primeiro procedimento (acho que devido à carga de trabalho do servidor naquele momento).Include client statistics
também fornece resultados diferentes.DBCC DROPCLEANBUFFERS
,DBCC FREEPROCCACHE
são bons, mas a mesma história...SET STATISTICS IO ON
poderia ser uma opção, mas como obter uma pontuação geral, pois tenho muitas tabelas envolvidas em meus procedimentos armazenados?Include actual execution plan
pode ser uma opção também. Recebo umestimated subtreecost
de 0,3253 para o primeiro procedimento armazenado e 0,3079 para o segundo. Posso dizer que o segundo procedimento armazenado é 6% mais rápido (=0,3253/0,3079)?Usando o campo "Lê" do SQL Server Profiler?
Então, como posso dizer que o segundo procedimento armazenado é x% mais rápido que o primeiro procedimento, independentemente das condições de execução (a carga de trabalho do servidor, o servidor onde esses procedimentos armazenados são executados etc.)?
Se não for possível, como posso provar que o segundo procedimento armazenado tem um tempo de execução melhor do que o primeiro procedimento armazenado?