Статистика CTAS хранилища данных SQL Azure

#azure-sqldw

#azure-sqldw

Вопрос:

Создает ли функция «Создать таблицу как» в хранилище данных SQL статистику в фоновом режиме или ее нужно создавать вручную (как я делал бы, когда выполнял обычную инструкцию «Создать таблицу»?)

Ответ №1:

Начиная с текущей версии, вам всегда нужно создавать статистику на уровне столбцов для таблиц, независимо от того, была ли она создана с помощью обычной CREATE TABLE команды или команды CTAS CREATE TABLE AS... . Также рекомендуется создавать статистику для столбцов, используемых в объединениях, предложениях WHERE, GROUP BY , ORDER BY и предложениях DISTINCT.

Что касается таблиц, созданных с помощью CTAS, компонент database Engine имеет правильное представление о том, сколько строк в таблице, как указано в sys.partitions , но не на уровне статистики на уровне столбцов. Для таблиц, созданных с помощью CREATE TABLE этого, по умолчанию используется 1000 строк. В приведенном ниже примере первая таблица была создана с помощью CTAS и содержит 208 строк, вторая таблица с обычным CREATE TABLE и INSERT из первой таблицы и также имеет 208 строк, но sys.partitions считает, что в ней 1000, например

sys.partitions

Создание любой статистики на уровне столбцов вручную исправит это число.

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