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

Откуда:
Сообщений: 4
Добрый день.

Объясните пожалуйста. Допустим есть хранимая процедура в ккоторой есть стобец CountryID который передаётся в качестве парметра.

Можно ли как то проверить из гистограммы, что хранимая процедура будет выполняться для разных значений CountryID?

Допустим гистограмма следующего вида:

Range_Hi_Key      Range_Rows    EQ_Rows    DISTINCT_RANGE_ROWS    AVG_RANGE_ROWS

        1           0              1                   0                   1    

        2           0            3456                  0                   1

        3           0            2537                  0                   1
 
        4           0            93481                 0                   1
30 апр 19, 18:51    [21875879]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36696
Что за лють я только что прочитал?
30 апр 19, 18:53    [21875881]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
aleks222
Member

Откуда:
Сообщений: 855
Мутновато - это слабо сказано.
30 апр 19, 18:54    [21875882]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
Щукина Анна
Member

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

План выполнения процедуры построится один раз - при первом её вызове, для того значения параметра, что прилетит в первое же выполнение. Если хотите "персональный план" под каждое значение входного параметра, то recompile вам в помощь.
30 апр 19, 19:22    [21875910]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
KnyaZz_EU
Member

Откуда:
Сообщений: 4
Может я неверно выразился...

Это гистрограмма для столбца CountryID.
Как можно ожидать, что хранимые процедуры для этой таблицы будут выполняться для различных значений CountryID, когда он передается в качестве параметра?
30 апр 19, 20:20    [21875955]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
Щукина Анна
Member

Откуда:
Сообщений: 1466
KnyaZz_EU
Как можно ожидать ... ... ?
Ожидать можно как угодно: можно сидя, можно лёжа. Тут всё зависит от ваших предпочтений ...


З.Ы.
Попробуйте ещё раз сформулировать свою мысль. Или перечитайте мой первый ответ. Или вы совсем не про это хотели поинтересоваться?
30 апр 19, 20:54    [21875976]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
KnyaZz_EU
Member

Откуда:
Сообщений: 4
Ваш ответ помог на самом деле. Но я другое имел ввиду. Я хотел узнать, можно ли из гистограммы понять, что процедура будет выполняться для разных значений параметра...
Ладно, бог с ним
30 апр 19, 21:33    [21875997]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
felix_ff
Member

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

вы неверно формулируете вопрос.

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


в вашем случае:
если таблица к примеру имеет такой вид
create table [country] (
[country_id] int,
[name] varchar(255),
index ix clustered [country_id] asc
);

если хранимка выглядит к примеру так:
create proc sp_country
@country_id int
with recompile
as
select * from [country] where [country_id] = @country_id;
[src]

для запуска процедуры с параметром 
[src]
 exec sp_country @country_id = 1

-будет получен план запроса где скорее всего будет поиск по индексу

а для вызова:
exec sp_country @country_id = 4
--будет выбрано сканирование индекса

все это образно "на пальцах"
30 апр 19, 23:57    [21876043]     Ответить | Цитировать Сообщить модератору
 Re: Вопрос о гистограмме  [new]
KnyaZz_EU
Member

Откуда:
Сообщений: 4
Спасибо, разобрался
1 май 19, 00:31    [21876057]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить