A visualização do sistema sys.partitions
possui uma coluna "linhas" que é o número total de linhas em uma determinada partição. Para uma tabela que não é particionada (ou possui apenas uma partição, dependendo de como você a vê), esta coluna fornece o número de linhas na tabela.
Estou curioso para saber como essa coluna é precisa e se posso usá-la em vez de a SELECT COUNT(1) FROM TableName
. Eu fiz algumas experiências em que cria uma tabela e adiciona alguns milhares de linhas, exclui algumas centenas, adiciona mais alguns milhares etc. No entanto, tenho uma tabela com cerca de 700 mil linhas e vários índices. A linha sys.partitions
para o índice em cluster está novamente desativada, no entanto, os outros índices mostram algumas pequenas variações (+ -20k).
Alguém sabe como essa linha é calculada e se é tão precisa quanto parece?
fonte
Respostas:
O Books Online declara que o campo de linhas "indica o valor aproximado número de linhas nesta partição". Portanto, eu esperaria que fosse próximo, mas não 100% exato, 100% do tempo.
Michael Zilberstein relata um exemplo de
sys.partitions
estar descontroladamente incorreto em Por falta de uma unha . Não estou dizendo que é uma ocorrência comum, mas é possível.sys.dm_db_index_physical_stats
contém umrecord_count
campo que parece ser mais preciso, embora esteja ciente de que a execução do DMV pode resultar em um problema de bloqueio de REDO se você o executar em uma instância que hospeda uma réplica secundária legível AlwaysOn.A explicação para o
record_count
campo mostra as seguintes informações:Veja também a resposta de Martin Smith para uma pergunta semelhante no Stack Overflow.
fonte