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

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


person LRonHoover    schedule 17.10.2016    source источник


Ответы (1)


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

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

sys.partitions

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

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

person wBob    schedule 17.10.2016