Гость
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Индексы и секционированная таблица / 4 сообщений из 4, страница 1 из 1
24.03.2021, 10:29
    #40056570
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы и секционированная таблица
Всем привет. Подскажите, недавно я занялся вопросом оптимизации ночного расчета, после анализа, пришел к выводу, что узким местом является огромная таблица (матрица), которая в течении расчета обновляется множество раз. Таблица была разделена логически полем PartNumber, по этому полю я и разбил таблицу на партиции. Время расчета сократилось в 2.5 раза.

На таблице создан PK
Теперь я сравниваю в планы запросов, например такие:

Код: sql
1.
2.
SELECT TOP (1000) * FROM [db_Matrix].[dbo].[tblSuperMainFull_V2_nopart] where PartNumber=8
SELECT TOP (1000) * FROM [db_Matrix].[dbo].[tblSuperMainFull_V2] where PartNumber=8



В первом случае оптимизатор выполняет Cluster Index Scan, во втором случае Table Scan.

Но что интересно, что во втором случае он помечает таблицу как Heap.

От сюда и вопрос, почему Heap? На таблице же есть кластерный индекс..

ЗЫ Правильно ли я понимаю, что оптимизатору теперь нет необходимости в индексе по полю PartNumber?
...
Рейтинг: 0 / 0
24.03.2021, 10:31
    #40056574
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы и секционированная таблица
teCa
Всем привет. Подскажите, недавно я занялся вопросом оптимизации ночного расчета, после анализа, пришел к выводу, что узким местом является огромная таблица (матрица), которая в течении расчета обновляется множество раз. Таблица была разделена логически полем PartNumber, по этому полю я и разбил таблицу на партиции. Время расчета сократилось в 2.5 раза.

На таблице создан PK
Теперь я сравниваю в планы запросов, например такие:

Код: sql
1.
2.
SELECT TOP (1000) * FROM [db_Matrix].[dbo].[tblSuperMainFull_V2_nopart] where PartNumber=8
SELECT TOP (1000) * FROM [db_Matrix].[dbo].[tblSuperMainFull_V2] where PartNumber=8




В первом случае оптимизатор выполняет Cluster Index Scan, во втором случае Table Scan.

Но что интересно, что во втором случае он помечает таблицу как Heap.

От сюда и вопрос, почему Heap? На таблице же есть кластерный индекс..


Если в плане Table Scan, то никакого кластерного индекса на таблице нет.
...
Рейтинг: 0 / 0
24.03.2021, 10:34
    #40056575
teCa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы и секционированная таблица
msLex,

Действительно, PK создался как некластеризованный.
...
Рейтинг: 0 / 0
24.03.2021, 11:36
    #40056599
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Индексы и секционированная таблица
teCa,

так и не обязан. Надо явно указывать, см. справку.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Индексы и секционированная таблица / 4 сообщений из 4, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]