La vista del sistema sys.partitions
tiene una columna "filas" que es el número total de filas en una partición dada. Para una tabla que no está particionada (o que solo tiene una partición dependiendo de cómo la mire), esta columna proporciona el número de filas en la tabla.
Tengo curiosidad por saber qué tan precisa es esta columna y si puedo usarla en lugar de a SELECT COUNT(1) FROM TableName
. He realizado algunos experimentos en los que crear una tabla y agregar algunos miles de filas, eliminar algunos cientos, agregar algunos miles más, etc. y el conteo siempre ha sido inexacto. Sin embargo, tengo una tabla con aproximadamente 700 mil filas y varios índices. La fila sys.partitions
para el índice agrupado está nuevamente activada, sin embargo, los otros índices muestran algunas ligeras variaciones (+ -20k).
¿Alguien sabe cómo se calcula esta fila y si es tan precisa como parece?
fuente
Respuestas:
Books Online indica que el campo de filas "indica la aproximación número de filas en esta partición". Por lo tanto, esperaría que fuera cercano, pero no 100% preciso, el 100% del tiempo.
Michael Zilberstein informa un ejemplo de
sys.partitions
ser muy incorrecto en Por falta de un clavo . No digo que es un hecho común, pero es posible.sys.dm_db_index_physical_stats
contiene unrecord_count
campo que parece ser más preciso, aunque tenga en cuenta que ejecutar el DMV puede provocar un problema de bloqueo de REDO si lo ejecuta en una instancia que aloja una réplica secundaria legible AlwaysOn.La explicacion del
record_count
campo muestra la siguiente información:Vea también la respuesta de Martin Smith a una pregunta similar sobre Stack Overflow.
fuente