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

Откуда:
Сообщений: 22
Как может быть такое, что таблица (куча) имеет кластерный индекс? Насколько я представлял, это два разных способа хранения и доступа к данным в памяти, или-или. Так оно и есть, но выходит что можно создать кластерный индекс на куче, и эти два объекта будут жить своей жизнью; кластерный индекс будет копией кучи в плане данных, и оптимизатор будет выбирать в зависимости от запроса что использовать - скан кучи или индекса. Вопросы:
1)Если мне нужно посчитать статистику чтений таблицы (в sys.dm_db_index_usage_stats), правильно ли я делаю, что суммирую сканирования кластерного индекса(+его лукапы) и сканирования кучи? И обновления так же - сумма апдейтов кучи и индекса.
2) На куче в дополнение к кластерному индексу есть некластерный, и они имеют один и тот же object_id - почему? Это же два совершенно разных объекта.
3) У меня в статистике чтения и обновления идут и по кластерному, и по куче. Можно ли в целях оптимизации, ничего не поломав, удалить кучу, оставив один кластерный индекс? И как это сделать (в одной транзакции дропнуть таблицу (кучу) и переименовать кластерный индекс на имя таблицы(кучи) ?

К сообщению приложен файл. Размер - 8Kb
11 авг 19, 16:04    [21946473]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 31995
Блог
Pasha4,

это может быть в двух случаях:
1) у вас неправильный запрос
2) вы его неверно интерпретируете
11 авг 19, 16:21    [21946487]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
invm
Member

Откуда: Москва
Сообщений: 8714
Pasha4
Как может быть такое, что таблица (куча) имеет кластерный индекс?
Никак.
Проверяйте свой запрос. Как минимум, не хватает схемы объекта.
11 авг 19, 16:23    [21946490]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
Pasha4
Member

Откуда:
Сообщений: 22
invm, спасибо, там действительно были разные схемы..
А что на счет одинаковых object_id у кластерного и некластерного индексов ?
11 авг 19, 16:56    [21946510]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36331
Pasha4
А что на счет одинаковых object_id у кластерного и некластерного индексов ?
Это нормально. В одной базе может быть 1000 индексов, у которых одинаковый object_id.
11 авг 19, 17:13    [21946521]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
invm
Member

Откуда: Москва
Сообщений: 8714
Pasha4
А что на счет одинаковых object_id у кластерного и некластерного индексов ?
У индекса нету object_id.
Индексы идентифицируются по object_id родителя и index_id.
11 авг 19, 17:27    [21946527]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28883
Pasha4
А что на счет одинаковых object_id у кластерного и некластерного индексов ?
Это у вас показывается ИД таблицы, а не индекса.
11 авг 19, 18:28    [21946550]     Ответить | Цитировать Сообщить модератору
 Re: кластерный индекс на куче?  [new]
-- KAB --
Member

Откуда: Москва
Сообщений: 22
Pasha4
Как может быть такое, что таблица (куча) имеет кластерный индекс? Насколько я представлял, это два разных способа хранения и доступа к данным в памяти, или-или. Так оно и есть, но выходит что можно создать кластерный индекс на куче, и эти два объекта будут жить своей жизнью; кластерный индекс будет копией кучи в плане данных, и оптимизатор будет выбирать в зависимости от запроса что использовать - скан кучи или индекса. Вопросы:
1)Если мне нужно посчитать статистику чтений таблицы (в sys.dm_db_index_usage_stats), правильно ли я делаю, что суммирую сканирования кластерного индекса(+его лукапы) и сканирования кучи? И обновления так же - сумма апдейтов кучи и индекса.
2) На куче в дополнение к кластерному индексу есть некластерный, и они имеют один и тот же object_id - почему? Это же два совершенно разных объекта.
3) У меня в статистике чтения и обновления идут и по кластерному, и по куче. Можно ли в целях оптимизации, ничего не поломав, удалить кучу, оставив один кластерный индекс? И как это сделать (в одной транзакции дропнуть таблицу (кучу) и переименовать кластерный индекс на имя таблицы(кучи) ?

У heap и clustered index - разные object_id )
12 авг 19, 10:08    [21946841]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить