Reconstruir índice - atualizar estatísticas?

1

Se eu executar Rebuild Index Task no plano de manutenção, preciso atualizar as estatísticas usando a tarefa Update Statistcs?

    
por hjk 28.01.2011 / 14:46

2 respostas

2

Sim

As estatísticas da coluna não são reconstruídas, apenas estatísticas de índice

--random data
CREATE TABLE dbo.foo (bar int PRIMARY KEY, humbug char(2000))
INSERT dbo.foo (bar, humbug) VALUES (1, 'aaa')
INSERT dbo.foo (bar, humbug) VALUES (2, 'bbb')
INSERT dbo.foo (bar, humbug) VALUES (3, 'ccc')
INSERT dbo.foo (bar, humbug) VALUES (4, 'aaa')
INSERT dbo.foo (bar, humbug) VALUES (5, 'bbb')
INSERT dbo.foo (bar, humbug) VALUES (6, 'ccc')
INSERT dbo.foo (bar, humbug) VALUES (7, 'ccc')
INSERT dbo.foo (bar, humbug) VALUES (8, 'ccc')
INSERT dbo.foo (bar, humbug) VALUES (9, 'ccc')
INSERT dbo.foo (bar, humbug) VALUES (10, 'cc')

INSERT dbo.foo SELECT bar+10, humbug FROM dbo.foo

--generate index stats + column stats
SELECT * FROM foo WHERE bar = 12
SELECT * FROM foo WHERE humbug = 'bbb'

--created date
SELECT
    OBJECT_SCHEMA_NAME([id]) + '.' + OBJECT_NAME([id]),
    NAME,
    STATS_DATE ([id], indid)
FROM
    dbo.sysindexes
WHERE
    OBJECT_NAME([id]) = 'foo'
ORDER BY
    STATS_DATE ([id], indid)  DESC

--Relax, have a coffee

--rebuild
ALTER INDEX ALL ON dbo.foo REBUILD WITH (FILLFACTOR = 90)

--check again
SELECT
    OBJECT_SCHEMA_NAME([id]) + '.' + OBJECT_NAME([id]),
    NAME,
    STATS_DATE ([id], indid)
FROM
    dbo.sysindexes
WHERE
    OBJECT_NAME([id]) = 'foo'
ORDER BY
    STATS_DATE ([id], indid)  DESC

--only index stats were updated
    
por 28.01.2011 / 15:41
0

Não. A reconstrução dos índices gerará novas estatísticas "gratuitamente".

    
por 28.01.2011 / 15:04