Bruno Perroni
DBA SQL Server com mais de 6 anos de experiência!

SET STATISTICS IO

Tudo bem pessoal. Nesse artigo irei trazer um comando muito útil para o tuning de queries.

SET STATISTICS IO ON/OFF

Ai você me pergunta, o que diabos é isso de SET STATISTICS IO.

Bom nada mais é do que forçar o SQL Server a exibir informações referentes à quantidade de atividade em disco gerada pelas instruções Transact-SQL.

Abaixo podemos ver como é feita a sua utilização.

Temos uma query que realiza joins entre tabelas, com muitos registros e com o SET STATISTICS IO ON podemos verificar quais tabelas estão sofrendo maior quantidade de leitura seja logica ou física.

SET STATISTICS IO ON

USE AdventureWorks2014
GO
SELECT TOP 100000 *
FROM Production.TransactionHistory th
INNER JOIN Production.TransactionHistoryArchive tha ON th.Quantity = tha.Quantity
INNER JOIN Production.Product P ON P.ProductID =  th.ProductID
INNER JOIN Production.ProductReview PR ON P.ProductID = PR.ProductID

SET STATISTICS IO OFF

Percebam que aparecem algumas informações na aba Messages do SSMS, essas informações podem nos dar um ponto de partida para melhorar a consulta.

Scan Count:
0 = Índice exclusivo ou índice clusterizado em uma chave primária foi utilizado;
1 = Índice clusterizado não exclusivo que é definido em uma coluna de chave não primária.

Logical Reads: É quando o SQL recupera a informação do buffer (Mémoria)

Physical Reads: É o SQL indo até o disco para recuperar a informação.

Read-ahead Reads: Número de páginas que foram colocadas no cache.