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

Откуда:
Сообщений: 1120
Следующий вопрос. Предположим есть система в которой нельзя менять индексы. Также мы знаем что первое поле составного индекса всегда одно и то же значение(не селективное). Статистика по этому индексу в результате не работает. Может есть в последних версиях вариант как бы эту с ситуацию исправить? Доп индексы и статистики это понятно? Ну или как вариант вообще запретить оптимизатору эту статистику использовать(хотя наверное он и сам догадается).
26 фев 19, 17:20    [21819962]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
МуМу
Member

Откуда:
Сообщений: 1120
По моему есть хинт оптимизатору запрета индекса, а глобально есть возможность его запретить как заведомо бесполезный?
26 фев 19, 17:23    [21819967]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
МуМу
Статистика по этому индексу в результате не работает.
Расшифруйте.
МуМу
а глобально есть возможность его запретить как заведомо бесполезный?
alter index ... disable
26 фев 19, 17:32    [21819976]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
МуМу
Member

Откуда:
Сообщений: 1120
Насколько я помню статистика по составным индексам работает по первому полю. Я не прав? А вообщем то буду благодарен за ссылку про работу оптимизатора со статистиками при составных индексах.Нужно освежить знания.
26 фев 19, 17:37    [21819982]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
invm
Member

Откуда: Москва
Сообщений: 9122
МуМу
Насколько я помню статистика по составным индексам работает по первому полю.
Гистограмма по первому. Плотность - по всем.
26 фев 19, 17:42    [21819988]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
AlanDenton
Member [скрыт]

Откуда:
Сообщений: 1004
МуМу
По моему есть хинт оптимизатору запрета индекса, а глобально есть возможность его запретить как заведомо бесполезный?

Хинта нет. И в будующих версиях не планируют добавлять (уже спрашивал).
26 фев 19, 17:54    [21820000]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
AlanDenton,

в теории можно попытаться сделать апдейт индексной статистики увеличив показатель количества страниц индекса, это даст увеличенную оценку использования подсистемы ввода вывода что может заставить оптимизатор выбирать для поиска другой индекс.

вот небольшое репро, но у этого подхода возможно есть подводные камни.


drop table if exists stat_test;
create table stat_test (a int, b int);

insert into stat_test (a, b)
select 1, ABS(CHECKSUM(NEWID()) % 6) + 1 from string_split(replicate(cast(';' as varchar(max)), 49999), ';')

insert into stat_test(a, b) values (2, 100)


create index ix on stat_test (a, b)
create index iy on stat_test (b, a)

set statistics xml, io, time on
go
select count_big(1) from stat_test where a = 1 option (recompile)
go
select count_big(1) from stat_test with(index=0) where a = 1 option (recompile)
go
set statistics xml, io, time off
go

update statistics stat_test(ix) with pagecount=10000000
go


set statistics xml, io, time on
go
select count_big(1) from stat_test where a = 1 option (recompile)
go
select count_big(1) from stat_test with(index=0) where a = 1 option (recompile)
go
set statistics xml, io, time off
go

drop table if exists stat_test
26 фев 19, 18:39    [21820023]     Ответить | Цитировать Сообщить модератору
 Re: Как по составному индексу подсказать правильную статистику  [new]
Владислав Колосов
Member

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

укажите хинтом другой индекс. Или вопрос не в этом?
26 фев 19, 19:36    [21820039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить