Создает ли функция «Создать таблицу как» в хранилище данных SQL в фоновом режиме статистику, или ее нужно создавать вручную (как если бы я выполнял обычный оператор «Создать таблицу»?)
Статистика CTAS хранилища данных Azure SQL
Ответы (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, например
Создание любой статистики на уровне столбца вручную позволит исправить это число.
Таким образом, всегда вручную создавайте статистику по важным столбцам, независимо от того, как была создана таблица.