Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Автоматическое обновление статистики  [new]
rere1234
Member

Откуда:
Сообщений: 38
Доброе время суток,

Microsoft SQL Server 2014 - 12.0.2000.8 (X64) 
Feb 20 2014 20:04:26 
Copyright (c) Microsoft Corporation
Developer Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


create table test (id int, name char(100), constraint PK_test primary key(id))
go
insert into test (id) values (1)
go
update test set id = 1
go 500
select rows, rowmodctr from sysindexes where name = 'PK_test'
go
dbcc show_statistics('test', 'PK_test')
go


Подскажите, почему не обновилась статистика?
9 май 15, 19:28    [17622205]     Ответить | Цитировать Сообщить модератору
 Re: Автоматическое обновление статистики  [new]
rere1234
Member

Откуда:
Сообщений: 38
Картинка с другого сайта.
9 май 15, 20:57    [17622373]     Ответить | Цитировать Сообщить модератору
 Re: Автоматическое обновление статистики  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
rere1234
Подскажите, почему не обновилась статистика?
Потому что для компиляции
update test set id = 1
статистика по PK_test не нужна.

Измените на
update test set id = 1 where id = 1
и статистика обновится.
9 май 15, 21:16    [17622422]     Ответить | Цитировать Сообщить модератору
 Re: Автоматическое обновление статистики  [new]
rere1234
Member

Откуда:
Сообщений: 38
invm,

Интересно при
update test set id = 1 where id = 1 
go 500
не обновилась, но обновилась при
update test set id = 1 where id != 2
go 500
9 май 15, 21:52    [17622507]     Ответить | Цитировать Сообщить модератору
 Re: Автоматическое обновление статистики  [new]
o-o
Guest
invm
Измените на
update test set id = 1 where id = 1
и статистика обновится.

на 2008 R2 да.
а на 2014 нет
9 май 15, 23:12    [17622688]     Ответить | Цитировать Сообщить модератору
 Re: Автоматическое обновление статистики  [new]
invm
Member

Откуда: Москва
Сообщений: 9913
rere1234
но обновилась при
update test set id = 1 where id != 2
go 500
o-o
на 2008 R2 да.
а на 2014 нет
В 2014-м оптимизатор еще больше поумнел. При компиляции, для предиката id = 1 статистика не загружается, потому что оценить количество строк можно без нее.
10 май 15, 10:18    [17623216]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить