Para fines de prueba y ajuste de consultas, puede asignar manualmente un recuento de filas y un recuento de páginas a las estadísticas de índice de una tabla mediante la ejecución UPDATE STATISTICS. Pero, ¿cómo recalcula / restablece las estadísticas a los contenidos reales de la tabla?
--- Create a table..
CREATE TABLE dbo.StatTest (
    i      int NOT NULL,
    CONSTRAINT PK_StatTest PRIMARY KEY CLUSTERED (i)
);
GO
--- .. and give it a thousand-or-so rows:
DECLARE @i int=1;
INSERT INTO dbo.StatTest (i) VALUES (@i);
WHILE (@i<1000) BEGIN;
    INSERT INTO dbo.StatTest (i) SELECT @i+i FROM dbo.StatTest;
    SET @i=@i*2;
END;Una consulta ficticia:
SELECT i%100, COUNT(*) FROM dbo.StatTest GROUP BY i%100;... devolverá el siguiente plan de consulta (la estimación de filas en el Análisis del índice es de 1024 filas).
Ejecute el UPDATE STATISTICScomando ...
UPDATE STATISTICS dbo.StatTest WITH ROWCOUNT=10000000;... y el plan se ve así, ahora con una estimación de 10 millones de filas:
¿Cómo restablezco el conteo de filas al contenido real de la tabla sin usar WITH ROWCOUNT?
Lo he intentado WITH FULLSCAN, WITH RESAMPLEy WITH SAMPLE n ROWS, pero el recuento de filas estadísticas sigue siendo 10 millones de filas. Insertar una fila o incluso eliminar todas las filas no actualiza las estadísticas, porque el cambio es demasiado pequeño.
fuente


