Isso realmente depende de índices e tipos de dados.
Usando o banco de dados Stack Overflow como exemplo, é assim que a tabela Usuários se parece:
Tem um PK / CX na coluna Id. Portanto, são todos os dados da tabela classificados por ID.
Com isso como o único índice, o SQL precisa ler a coisa toda (sem as colunas LOB) na memória, se ainda não estiver lá.
DBCC DROPCLEANBUFFERS-- Don't run this anywhere near prod.
SET STATISTICS TIME, IO ON
SELECT u.Id
INTO #crap1
FROM dbo.Users AS u
O tempo de estatísticas e o perfil io são assim:
Table 'Users'. Scan count 7, logical reads 80846, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2406 ms, elapsed time = 446 ms.
Se eu adicionar um índice não clusterizado adicional apenas no ID
CREATE INDEX ix_whatever ON dbo.Users (Id)
Agora tenho um índice muito menor que satisfaz minha consulta.
DBCC DROPCLEANBUFFERS-- Don't run this anywhere near prod.
SELECT u.Id
INTO #crap2
FROM dbo.Users AS u
O perfil aqui:
Table 'Users'. Scan count 7, logical reads 6587, physical reads 0, read-ahead reads 6549, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2344 ms, elapsed time = 384 ms.
Podemos fazer muito menos leituras e economizar um pouco de tempo de CPU.
Sem mais informações sobre sua definição de tabela, não posso realmente reproduzir o que você está tentando medir melhor.
Mas você está dizendo que, a menos que exista um índice específico nessa coluna, as outras colunas / campos também serão verificadas? Isso é apenas uma desvantagem inerente ao design de tabelas rowstore? Por que campos irrelevantes seriam verificados?
Sim, isso é específico para tabelas rowstore. Os dados são armazenados pela linha nas páginas de dados. Mesmo que outros dados na página sejam irrelevantes para sua consulta, toda a linha> página> índice precisa ser lida na memória. Eu não diria que as outras colunas são "digitalizadas" tanto quanto as páginas em que existem são digitalizadas para recuperar o valor único nelas relevante para a consulta.
Usando o exemplo da lista telefônica antiga: mesmo que você esteja apenas lendo números de telefone, ao virar a página, está transformando sobrenome, nome, endereço etc. junto com o número de telefone.