Поделиться через


Типы данных таблицы для выделенного пула SQL (ранее SQL DW) в Azure Synapse Analytics

В этой статье приведены рекомендации по определению типов данных таблицы в выделенном пуле SQL.

Поддерживаемые типы данных

Выделенный пул SQL (ранее — хранилище данных SQL) поддерживает наиболее часто используемые типы данных. Список поддерживаемых типов данных см. в типах данных в инструкции CREATE TABLE.

Уменьшение длины строки

Уменьшение размера типов данных сокращает длину строки, что улучшает производительность запросов. Используйте наименьший тип данных, подходящий для ваших данных.

  • Избегайте определения столбцов символов с большой длиной по умолчанию. Например, если самое длинное значение состоит из 25 знаков, столбец необходимо определить как VARCHAR(25).
  • Избегайте использования NVARCHAR , если требуется только VARCHAR.
  • По возможности используйте NVARCHAR(4000) или VARCHAR(8000) вместо NVARCHAR(MAX) или VARCHAR(MAX).

Если вы используете внешние таблицы PolyBase для загрузки таблиц, определенная длина строки таблицы не может превышать 1 МБ. Если строка с данными переменной длины превышает 1 МБ, можно загрузить строку с помощью BCP, а не PolyBase.

Определение неподдерживаемых типов данных

Если вы переносите базу данных из другой базы данных SQL, можно найти типы данных, которые не поддерживаются в выделенном пуле SQL. Используйте следующий запрос, чтобы обнаружить неподдерживаемые типы данных в существующей схеме SQL:

SELECT  t.[name], c.[name], c.[system_type_id], c.[user_type_id], y.[is_user_defined], y.[name]
FROM sys.tables  t
JOIN sys.columns c on t.[object_id]    = c.[object_id]
JOIN sys.types   y on c.[user_type_id] = y.[user_type_id]
WHERE y.[name] IN ('geography','geometry','hierarchyid','image','text','ntext','sql_variant','xml')
 AND  y.[is_user_defined] = 1;

Обходные решения для неподдерживаемых типов данных

В следующем списке показаны типы данных, которые выделенный SQL-пул (ранее, хранилище данных SQL) не поддерживает, и предоставляются полезные альтернативы для неподдерживаемых типов данных.

Неподдерживаемые типы данных Обходной путь
geometry varbinary
geography varbinary
hierarchyid nvarchar(4000)
Изображение varbinary
текст varchar
ntext nvarchar
sql_variant Разделите столбец на несколько строго типизированных столбцов.
таблицы Преобразуйте во временные таблицы.
timestamp Для использования datetime2 и функции CURRENT_TIMESTAMP внесите изменения в код. Поддерживаются только константы по умолчанию, поэтому current_timestamp нельзя определить как ограничение по умолчанию. Если вам нужно переместить значения версий строк из столбца с типом метки времени, используйте BINARY(8) или VARBINARY(8) для значений версии строк NOT NULL или NULL.
xml varchar
Определяемый пользователем тип По возможности выполните преобразование в исходный тип данных.
Значения по умолчанию Значения по умолчанию поддерживают только литералы и константы.

Дальнейшие действия

Дополнительные сведения о разработке таблиц см. в разделе "Обзор таблиц".