CREATE TABLE (Azure Synapse Analytics)

Применимо к: даAzure Synapse Analytics даПараллельное хранилище данных

Создает новую таблицу в Azure Synapse Analytics или Система платформы аналитики (PDW).

Сведения о таблицах и об использовании таблиц см. в разделе Таблицы в Azure Synapse Analytics.

Примечание

Обсуждения Azure Synapse Analytics в этой статье применимы как к Azure Synapse Analytics, так и к Система платформы аналитики (PDW), если не указано иное.

Примечание

Бессерверный пул SQL в Azure Synapse Analytics поддерживает только внешние и временные таблицы.

Значок ссылки на статью Синтаксические обозначения в Transact-SQL

Синтаксис

-- Create a new table.
CREATE TABLE { database_name.schema_name.table_name | schema_name.table_name | table_name }
    ( 
      { column_name <data_type>  [ <column_options> ] } [ ,...n ]
    )  
    [ WITH ( <table_option> [ ,...n ] ) ]  
[;]  

<column_options> ::=
    [ COLLATE Windows_collation_name ]
    [ NULL | NOT NULL ] -- default is NULL
    [ IDENTITY [ ( seed, increment ) ]
    [ <column_constraint> ]

<column_constraint>::=
    {
        DEFAULT constant_expression
        | PRIMARY KEY NONCLUSTERED NOT ENFORCED -- Applies to Azure Synapse Analytics only
        | UNIQUE NOT ENFORCED -- Applies to Azure Synapse Analytics only
    }

<table_option> ::=
    {
       CLUSTERED COLUMNSTORE INDEX -- default for Azure Synapse Analytics 
      | CLUSTERED COLUMNSTORE INDEX ORDER (column [,...n])  
      | HEAP --default for Parallel Data Warehouse
      | CLUSTERED INDEX ( { index_column_name [ ASC | DESC ] } [ ,...n ] ) -- default is ASC
    }  
    {
        DISTRIBUTION = HASH ( distribution_column_name )
      | DISTRIBUTION = ROUND_ROBIN -- default for Azure Synapse Analytics
      | DISTRIBUTION = REPLICATE -- default for Parallel Data Warehouse
    }
    | PARTITION ( partition_column_name RANGE [ LEFT | RIGHT ] -- default is LEFT  
        FOR VALUES ( [ boundary_value [,...n] ] ) )

<data type> ::=
      datetimeoffset [ ( n ) ]  
    | datetime2 [ ( n ) ]  
    | datetime  
    | smalldatetime  
    | date  
    | time [ ( n ) ]  
    | float [ ( n ) ]  
    | real [ ( n ) ]  
    | decimal [ ( precision [ , scale ] ) ]   
    | numeric [ ( precision [ , scale ] ) ]   
    | money  
    | smallmoney  
    | bigint  
    | int   
    | smallint  
    | tinyint  
    | bit  
    | nvarchar [ ( n | max ) ]  -- max applies only to Azure Synapse Analytics 
    | nchar [ ( n ) ]  
    | varchar [ ( n | max )  ] -- max applies only to Azure Synapse Analytics  
    | char [ ( n ) ]  
    | varbinary [ ( n | max ) ] -- max applies only to Azure Synapse Analytics  
    | binary [ ( n ) ]  
    | uniqueidentifier  

Аргументы

database_name
Имя базы данных, которая будет содержать новую таблицу. Значение по умолчанию — текущая база данных.

schema_name
Схема таблицы. Схема является необязательной. Если схема не указана, используется схема по умолчанию.

table_name
Имя новой таблицы. Чтобы создать локальную временную таблицу, укажите # перед именем таблицы. Пояснения и рекомендации для временных таблиц см. в разделе Временные таблицы в Azure Synapse Analytics.

column_name
Имя столбца таблицы.

Параметры столбца

COLLATE параметры_сортировки_Windows
Задает параметры сортировки для выражения. Параметры сортировки должны входить в число параметров сортировки Windows, поддерживаемых SQL Server. Список параметров сортировки Windows, поддерживаемых SQL Server, см. в разделе Имя параметров сортировки Windows (Transact-SQL)/).

NULL | NOT NULL
Указывает, допустимы ли для столбца значения NULL. Значение по умолчанию — NULL.

[ CONSTRAINT имя_ограничения ] DEFAULT выражение_ограничения
Указывает значение столбца по умолчанию.

Аргумент Объяснение
constraint_name Необязательное имя ограничения. Имя ограничения уникально в пределах базы данных. Имя можно использовать повторно в других базах данных.
constant_expression Значение по умолчанию для столбца. Выражение должно быть литералом или константой. Например, могут использоваться следующие константные выражения: 'CA', 4. Следующие константные выражения не могут использоваться: 2+3, CURRENT_TIMESTAMP.

Параметры структуры таблицы

Рекомендации по выбору типа таблицы см. в разделе Индексирование таблиц в Azure Synapse Analytics.

CLUSTERED COLUMNSTORE INDEX

Сохраняет таблицу как кластеризованный индекс columnstore. Кластеризованный индекс columnstore применяется ко всем данным таблицы. Это поведение является стандартным для Azure Synapse Analytics.

HEAP Сохраняет таблицу в виде кучи. Это поведение является стандартным для Система платформы аналитики (PDW).

CLUSTERED INDEX ( index_column_name [ ,...n ] )
Сохраняет таблицу в виде кластеризованного индекса с одним или несколькими ключевыми столбцами. Данные сохраняются по записям. Используйте имя_индексного_столбца для указания имен одного или нескольких ключевых столбцов в индексе. Дополнительные сведения см. в подразделе "Таблицы rowstore" в разделе "Общие замечания".

LOCATION = USER_DB Этот параметр не рекомендуется использовать. Он является допустимым с точки зрения синтаксиса, но больше не требуется и не влияет на поведение.

Параметры распределения таблицы

Сведения о выборе наилучшего метода распределения и об использовании таблиц распределения см. в разделе Распределение таблиц в Azure Synapse Analytics.

DISTRIBUTION = HASH ( имя_столбца_распределения ) Назначает каждую строку одному распределению путем хэширования значения, которое хранится в столбце распределения с указанным именем_столбца_распределения. Алгоритм является детерминированным, то есть одному и тому же значению всегда соответствует одно и то же распределение. Столбец распределения должен быть определен как NOT NULL, так как все записи, имеющие значение NULL, назначены одному и тому же распределению.

DISTRIBUTION = ROUND_ROBIN Равномерно распределяет строки между всеми распределениями циклическим способом. Это поведение является стандартным для Azure Synapse Analytics.

DISTRIBUTION = REPLICATE Сохраняет по одной копии таблицы на каждом вычислительном узле. Для Azure Synapse Analytics таблица хранится в базе данных распространителя на каждом вычислительном узле. Для Система платформы аналитики (PDW) таблица хранится в файловой группе SQL Server, которая охватывает вычислительный узел. Это поведение является стандартным для Система платформы аналитики (PDW).

Параметры секционирования таблицы

Рекомендации по использованию секций таблицы см. в разделе Секционирование таблиц в Azure Synapse Analytics.

PARTITION ( имя_столбца_секции RANGE [ LEFT | RIGHT ] FOR VALUES ( [ граничное_значение [,...n] ] ))
Создает одну или несколько секций таблицы. Эти секции представляют собой горизонтальные срезы таблицы, которые позволяют применять операции к подмножествам записей независимо от того, хранится ли таблица в виде кучи, кластеризованного индекса или кластерного индекса columnstore. В отличие от столбца распределения секции таблицы не определяют распределений, в которых хранятся записи. Вместо этого секции таблицы определяют группирование и хранение строк в каждом распределении.

Аргумент Объяснение
имя_столбца_секции Указывает столбец, который Azure Synapse Analytics будет использовать для секционирования строк. Столбец может иметь любой тип данных. Azure Synapse Analytics сортирует значения столбцов секционирования по возрастанию. Порядок от низкого к высокому следует от LEFT до RIGHT в спецификации RANGE.
RANGE LEFT Указывает граничное значение, принадлежащее секции слева (меньшие значения). Значение по умолчанию — LEFT.
RANGE RIGHT Указывает граничное значение, принадлежащее секции справа (большие значения).
FOR VALUES ( boundary_value [,...n] ) Указывает граничные значения для секции. граничное_значение является константным выражением. Оно не может быть NULL. Оно должно иметь тип данных столбца_секции или неявно преобразовываться в этот тип. Это значение не может быть усечено во время неявного преобразования, так чтобы размер и масштаб значения не соответствовали типу данных столбца_секции

Если вы указали предложение PARTITION, но не указали граничное значение, Azure Synapse Analytics создаст секционированную таблицу с одной секцией. Если это допустимо, вы можете разделить таблицу на две секции в дальнейшем.

При указании одного граничного значения в результирующей таблице будет две секции; одна для значений меньше граничного значения и вторая для значения больше граничного значения. При перемещении секции в несекционированную таблицу эта таблица получит данные, но в метаданных этой таблицы будут отсутствовать границы секций.

См. раздел Создание секционированной таблицы в разделе "Примеры".

Вариант упорядоченного кластеризованного индекса columnstore

Кластеризованный индекс columnstore включен по умолчанию для создания таблиц в Azure Synapse Analytics. Перед сжатием данных в сегментах columnstore данные в индексе не сортируются. При создании индекса с ORDER данные сортируются до добавления в сегменты индекса, и производительность запросов можно улучшить. Дополнительные сведения см. в разделе Настройка производительности с упорядоченным кластеризованным индексом columnstore.

Упорядоченный кластеризованный индекс columnstore можно создавать для столбцов любых типов данных, поддерживаемых в Azure Synapse Analytics, за исключением строковых столбцов.

Пользователи могут запрашивать столбец column_store_order_ordinal в sys.index_columns для получения списка столбцов, по которым упорядочена таблица, и последовательности упорядочения.

Дополнительные сведения см. в разделе Настройка производительности с упорядоченным кластеризованным индексом columnstore.

Тип данных

Azure Synapse Analytics поддерживает наиболее часто используемые типы данных. Ниже приведен список поддерживаемых типов данных, сведения о них и размер при хранении в байтах. Чтобы лучше разобраться в типах данных и способах их использования, обратитесь к разделу Типы данных таблиц в Azure Synapse Analytics .

Таблица преобразования типов данных приведена в разделе "Неявные преобразования" статьи CAST и CONVERT (Transact-SQL).

datetimeoffset [ ( n ) ]
Значение по умолчанию для n равно 7.

datetime2 [ ( n ) ]
То же, что datetime, за исключением того, что можно указать количество долей секунды. Значение по умолчанию для n равно 7.

Значение n Точность Масштабирование
0 19 0
1 21 1
2 22 2
3 23 3
4 24 4
5 25 5
6 26 6
7 27 7

datetime
Сохраняет дату и время дня длиной от 19 до 23 символов по Григорианскому календарю. Дата может содержать год, месяц и день. Время содержит часы, минуты и секунды. Также можно включить отображение трех цифр для долей секунды. Размер при хранении составляет 8 байт.

smalldatetime
Сохраняет дату и время. Размер при хранении составляет 4 байта.

date
Сохраняет дату длиной до 10 символов по григорианскому календарю. Размер при хранении составляет 3 байта. Дата сохраняется в виде целого числа.

time [ ( n ) ]
Значение по умолчанию для n равно 7.

float [ ( n ) ]
Типы приблизительных числовых данных, используемые для числовых данных с плавающей запятой. Данные с плавающей запятой являются приблизительными, поэтому не все значения из диапазона могут быть отображены точно. n указывает количество битов, используемых для хранения мантиссы float в экспоненциальном представлении. n определяет точность и размер хранения данных. Если указан параметр n, он должен находиться в диапазоне от 1 до 53. Значение n по умолчанию — 53.

Значение n Точность Объем памяти
1–24 7 цифр 4 байта
25–53 15 знаков 8 байт

В приложении Azure Synapse Analytics параметр n может принимать одно из двух возможных значений. Если 1<= n <= 24, n принимает значение 24. Если 25 <= n <= 53, n принимает значение 53.

Тип данных Azure Synapse Analytics float соответствует стандарту ISO для всех значений n в диапазоне от 1 до 53. Синонимом типа double precision является тип float(53).

real [ ( n ) ]
Определение типа real соответствует определение типа float. Синонимом по стандарту ISO для типа real является float(24).

decimal [ ( точность [ , масштаб ] ) ] | numeric [ ( точность [ , масштаб ] ) ]
Хранит числа с фиксированной точностью и масштабом.

precision
Максимальное количество десятичных разрядов числа (как слева, так и справа от десятичной запятой). Точность должна находиться в диапазоне от 1 до 38. Точность по умолчанию — 18.

масштаб
Максимальное количество десятичных разрядов числа справа от десятичной запятой. Масштаб должен иметь значение от 0 до точности. Масштаб можно указать только в том случае, если указана точность. Масштаб по умолчанию — 0, поэтому 0 <= масштаб <= точность. Максимальный размер хранилища зависит от точности.

Точность Байты хранилища
1–9 5
10–19 9
20–28 13
29–38 17

money | smallmoney
Типы данных, представляющие денежные значения.

Тип данных Байты хранилища
money 8
smallmoney 4

bigint | int | smallint | tinyint
Типы точных числовых данных, использующие целые значения. Размер данных хранения приведен в следующей таблице.

Тип данных Байты хранилища
bigint 8
int 4
smallint 2
tinyint 1

bit
Целочисленный тип данных, который может принимать значения 1, 0 или NULL. Компонент Azure Synapse Analytics оптимизирует хранение столбцов типа bit. Если в таблице имеется 8 или менее столбцов типа bit, они хранятся как 1 байт. Если имеется от 9 до 16 столбцов типа bit, они хранятся как 2 байта и т.д.

nvarchar [ ( n | max ) ] -- max применяется только к Azure Synapse Analytics.
Символьные данные Юникода с переменной длиной. n может иметь значение от 1 до 4000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ). Размер для хранения в байтах равен удвоенному числу введенных символов + 2 байта. Введенные данные могут иметь длину в ноль символов.

nchar [ ( n ) ]
Символьные данные фиксированной длины в формате Юникод. Длина составляет n символов. n должно иметь значение от 1 до 4000. Размер хранилища — дважды n байт.

varchar [ ( n | max ) ] -- max применяется только к Azure Synapse Analytics.
Символьные данные переменной длины не в формате Юникод. Длина составляет n байт. n может иметь значение от 1 до 8000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ). Размер при хранении — это фактический размер введенных данных плюс 2 байта.

char [ ( n ) ]
Символьные данные фиксированной длины не в формате Юникод. Длина составляет n байт. n может иметь значение от 1 до 8000. Размер при хранении составляет n байт. Значение n по умолчанию — 1.

varbinary [ ( n | max ) ] -- max применяется только к Azure Synapse Analytics.
Двоичные данные с переменной длиной. n может иметь значение от 1 до 8000. Значение max указывает, что максимальный размер при хранении составляет 2^31-1 байт (2 ГБ). Размер хранения равен фактической длине данных плюс два байта. Значение по умолчанию для n равно 7.

binary [ ( n ) ]
Двоичные данные фиксированной длины n байт. n может иметь значение от 1 до 8000. Размер при хранении составляет n байт. Значение по умолчанию для n равно 7.

uniqueidentifier
16-байтовый идентификатор GUID.

Разрешения

Для создания таблицы требуется разрешение в предопределенной роли базы данных db_ddladmin или:

  • разрешение CREATE TABLE в базе данных
  • разрешение ALTER SCHEMA для схемы, которая будет содержать таблицу.

Для создания секционированной таблицы требуется разрешение в предопределенной роли базы данных db_ddladmin или

  • разрешение ALTER ANY DATASPACE

Имя входа, от имени которого создается локальная временная таблица, получает разрешения CONTROL, INSERT, SELECT и UPDATE для этой таблицы.

Общие замечания

Минимальные и максимальные ограничения см. в разделе Azure Synapse AnalyticsОграничения емкости .

Определение числа секций таблицы

Каждая пользовательская таблица делится на несколько таблиц меньшего размера, которые хранятся в различных расположениях, называемых распределениями. Azure Synapse Analytics использует 60 распределений. В Система платформы аналитики (PDW) количество распределений зависит от количества вычислительных узлов.

Каждое распределение содержит все секции таблицы. Например, для 60 распределений, четырех секций таблицы и одной пустой секции мы получим 300 секций (5 x 60= 300). Если в таблице есть кластеризованные индексы columnstore, то в каждой секции будет один индекс columnstore, т. е. в общей сложности в таблице будет 300 индексов columnstore.

Рекомендуется использовать меньшее число секций таблицы, чтобы в каждом индексе columnstore было достаточное количество строк для использования всех преимуществ индексов columnstore. Дополнительные сведения см. в статье Секционирование таблиц в Azure Synapse Analytics и в разделе об индексировании таблиц в Azure Synapse Analytics.

Таблица rowstore (куча или кластеризованный индекс)

Таблица rowstore — это таблица, которая хранится в порядке по строкам. Это куча или кластеризованный индекс. Azure Synapse Analytics создает все таблицы rowstore с включенным сжатием страниц. Это поведение не настраивается пользователем.

Таблица columnstore (индекс columnstore)

Таблица columnstore — это таблица, которая хранится в порядке по столбцам. Индекс columnstore — это технология, которая управляет данными, хранящимися в таблице columnstore. Кластеризованный индекс columnstore не влияет на способ распределения данных, а влияет на способ хранения данных в пределах каждого распределения.

Чтобы преобразовать таблицу rowstore в таблицу columnstore, удалите все существующие индексы таблицы и создайте кластеризованный индекс columnstore. Пример см. в разделе CREATE COLUMNSTORE INDEX (Transact-SQL).

Дополнительные сведения вы найдете в следующих статьях:

Ограничения

Вы не можете определить ограничение DEFAULT для столбца распределения.

Секции

При использовании секций в столбце секции не могут использоваться параметры сортировки только для Юникода. Например следующая инструкция завершится с ошибкой.

CREATE TABLE t1 ( c1 varchar(20) COLLATE Divehi_90_CI_AS_KS_WS) WITH (PARTITION (c1 RANGE FOR VALUES (N'')))

Если граничное_значение представляет собой литеральное значение, которое должно быть неявно преобразовано в тип данных столбца_секции, возникнет несоответствие. Литеральное значение отображается с помощью системных представлений Azure Synapse Analytics, но преобразованное значение используется для операций Transact-SQL.

Временные таблицы

Глобальные временные таблицы, которые начинаются с ##, не поддерживаются.

На локальные временные таблицы распространяются следующие ограничения:

  • Они видимы только в текущем сеансе. Azure Synapse Analytics удаляет их автоматически в конце сеанса. Для явного удаления этих таблиц используйте инструкцию DROP TABLE.
  • Их нельзя переименовать.
  • Они не могут иметь секции или представления.
  • Изменить их разрешения невозможно. Инструкции GRANT, DENY и REVOKE не могут использоваться с локальными временными таблицами.
  • Консольные команды базы данных для временных таблиц блокируются.
  • Если в пакете используется несколько локальных временных таблиц, они должны иметь уникальные имена. Если в нескольких сеансах запускается один и тот же пакет и создается одна и та же локальная временная таблица, Azure Synapse Analytics добавляет числовой суффикс к имени локальной временной таблицы, чтобы сохранить уникальные имена локальных временных таблиц.

Режим блокировки

Применяет монопольную блокировку к таблице. Применяет совмещаемую блокировку к объектам DATABASE, SCHEMA и SCHEMARESOLUTION.

Примеры для столбцов

A. Указание параметров сортировки столбца

В следующем примере создается таблица MyTable с двумя различными параметрами сортировки столбцов. По умолчанию столбец mycolumn1 имеет параметры сортировки по умолчанию Latin1_General_100_CI_AS_KS_WS. Столбец mycolumn2 имеет параметры сортировки Frisian_100_CS_AS.

CREATE TABLE MyTable   
  (  
    mycolumnnn1 nvarchar,  
    mycolumn2 nvarchar COLLATE Frisian_100_CS_AS )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

Б. Указания ограничения DEFAULT для столбца

В следующем примере показан синтаксис для указания значения по умолчанию для столбца. Столбец colA имеет ограничение по умолчанию constraint_colA и значение по умолчанию 0.

CREATE TABLE MyTable
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX )  
;  

Примеры для временных таблиц

В. Создание локальной временной таблицы

В следующем примере создается локальная временная таблица с именем #myTable. Имя таблицы состоит из трех частей и начинается с #.

CREATE TABLE AdventureWorks.dbo.#myTable
  (  
   id int NOT NULL,  
   lastName varchar(20),  
   zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),  
    CLUSTERED COLUMNSTORE INDEX
  )  
;  

Примеры структуры таблиц

Г. Создание таблицы с кластеризованным индексом columnstore

В следующем примере создается таблица распределения с кластеризованным индексом columnstore. Каждое распределение будет храниться в виде кластеризованного индекса columnstore.

Кластеризованный индекс columnstore не влияет на способ распределения данных; данные всегда распределены по строкам. Кластеризованный индекс влияет на способ хранения данных в пределах каждого распределения.

  CREATE TABLE MyTable
  (  
    colA int CONSTRAINT constraint_colA DEFAULT 0,  
    colB nvarchar COLLATE Frisian_100_CS_AS
  )  
WITH   
  (   
    DISTRIBUTION = HASH ( colB ),  
    CLUSTERED COLUMNSTORE INDEX
  )  
;  

Д. Создание упорядоченного кластеризованного индекса columnstore

В следующем примере показано, как создать упорядоченный кластеризованный индекс columnstore. Индекс упорядочен по SHIPDATE.

CREATE TABLE Lineitem  
WITH (DISTRIBUTION = ROUND_ROBIN, CLUSTERED COLUMNSTORE INDEX ORDER(SHIPDATE))  
AS  
SELECT * FROM ext_Lineitem

Примеры распределения таблиц

Е. Создание таблицы ROUND_ROBIN

В следующем примере создается таблица ROUND_ROBIN с тремя столбцами и без секций. Данные распространяются между всеми распределениями. Создается таблица с кластеризованным индексом columnstore, который обладает лучшей производительностью и характеристиками сжатия данных по сравнению с кучей или кластеризованным индексом rowstore.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH ( CLUSTERED COLUMNSTORE INDEX );  

G. Создание таблицы с распределением хэша

В следующем примере создается точно такая же таблица, как в предыдущем примере. Тем не менее для этой таблицы строки распределены (по столбцу id) вместо случайного распределения, как в таблице ROUND_ROBIN. Создается таблица с кластеризованным индексом columnstore, который обладает лучшей производительностью и характеристиками сжатия данных по сравнению с кучей или кластеризованным индексом rowstore.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = HASH (id),   
    CLUSTERED COLUMNSTORE INDEX  
  );  

H. Создание реплицированной таблицы

В следующем примере создается реплицированная таблица, как и в предыдущем примере. Реплицированные таблицы копируются в полном объеме на каждый вычислительный узел. Благодаря наличию копии на каждом вычислительном узле уменьшается объем перемещаемых данных для запросов. В этом примере таблица создается с использованием кластеризованного индекса, который обеспечивает лучшее сжатие данных, чем куча. Куча может не содержать достаточно записей для достижения хорошего сжатия с использованием кластеризованного индекса columnstore.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode varchar(6)  
  )  
WITH  
  (   
    DISTRIBUTION = REPLICATE,
    CLUSTERED INDEX (lastName)  
  );  

Примеры секций таблиц

I. Создание секционированной таблицы

В следующем примере создается такая же таблица, как в примере A, с добавлением секционирования RANGE LEFT для столбца id. В нем указаны четыре граничных значения секций, таким образом, общее количество секций равно пяти.

CREATE TABLE myTable
  (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH
  (
  
    PARTITION ( id RANGE LEFT FOR VALUES (10, 20, 30, 40 )),  
    CLUSTERED COLUMNSTORE INDEX
  )  
;  

В этом примере данные будут отсортированы в следующих секциях:

  • Секция 1: столбцы до 10-го включительно
  • Секция 2: столбцы с 11-го по 20-й
  • Секция 3: столбцы с 21-го по 30-й
  • Секция 4: столбцы с 31-го по 40-й
  • Секция 5: столбцы с 41-го и далее

Если эта же таблица была секционирована с использованием RANGE RIGHT вместо RANGE LEFT (по умолчанию), данные будут отсортированы в следующих секциях:

  • Секция 1: столбцы до 10-го
  • Секция 2: столбцы с 10-го по 19-й
  • Секция 3: столбцы с 20-го по 29-й
  • Секция 4: столбцы с 30-го по 39-й
  • Секция 5: столбцы с 40-го и далее

J. Создание секционированной таблицы с одной секцией

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

CREATE TABLE myTable (  
    id int NOT NULL,  
    lastName varchar(20),  
    zipCode int)  
WITH
    (
      PARTITION ( id RANGE LEFT FOR VALUES ( )),  
      CLUSTERED COLUMNSTORE INDEX  
    )  
;  

K. Создание таблицы с секционированием даты

В следующем примере создается новая таблица с именем myTable с секционированием по столбцу date. При использовании RANGE RIGHT и дат в качестве граничных значений в каждой секции будут находиться данные для одного месяца.

CREATE TABLE myTable (  
    l_orderkey      bigint,
    l_partkey       bigint,
    l_suppkey       bigint,
    l_linenumber    bigint,
    l_quantity      decimal(15,2),  
    l_extendedprice decimal(15,2),  
    l_discount      decimal(15,2),  
    l_tax           decimal(15,2),  
    l_returnflag    char(1),  
    l_linestatus    char(1),  
    l_shipdate      date,  
    l_commitdate    date,  
    l_receiptdate   date,  
    l_shipinstruct  char(25),  
    l_shipmode      char(10),  
    l_comment       varchar(44))  
WITH
  (
    DISTRIBUTION = HASH (l_orderkey),  
    CLUSTERED COLUMNSTORE INDEX,  
    PARTITION ( l_shipdate  RANGE RIGHT FOR VALUES
      (  
        '1992-01-01','1992-02-01','1992-03-01','1992-04-01','1992-05-01',
        '1992-06-01','1992-07-01','1992-08-01','1992-09-01','1992-10-01',
        '1992-11-01','1992-12-01','1993-01-01','1993-02-01','1993-03-01',
        '1993-04-01','1993-05-01','1993-06-01','1993-07-01','1993-08-01',
        '1993-09-01','1993-10-01','1993-11-01','1993-12-01','1994-01-01',
        '1994-02-01','1994-03-01','1994-04-01','1994-05-01','1994-06-01',
        '1994-07-01','1994-08-01','1994-09-01','1994-10-01','1994-11-01',
        '1994-12-01'  
      ))
  );  

См. также раздел

CREATE TABLE AS SELECT (Azure Synapse Analytics)
DROP TABLE (Transact-SQL)
ALTER TABLE (Transact-SQL)
sys.index_columns (Transact-SQL)