Типы данных таблиц для выделенного пула SQL (ранее — SQL DW) в Azure Synapse Analytics
В эту статью включены рекомендации по определению типов данных таблиц в выделенном пуле SQL.
Поддерживаемые типы данных
Выделенный пул SQL (ранее — SQL DW) поддерживает самые распространенные типы данных. Список поддерживаемых типов данных см. в типах данных в инструкции 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 DW), и предоставлены полезные альтернативы для неподдерживаемых типов данных.
Неподдерживаемые типы данных | Возможное решение |
---|---|
geometry | varbinary |
geography | varbinary |
hierarchyid | nvarchar(4000) |
image | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Разделите столбец на несколько строго типизированных столбцов. |
table | Преобразуйте во временные таблицы. |
timestamp | Для использования datetime2 и функции CURRENT_TIMESTAMP внесите изменения в код. По умолчанию поддерживаются только константы, поэтому использовать current_timestamp как ограничение по умолчанию невозможно. Если нужно перенести значения версии строки из типизированного столбца timestamp, используйте BINARY(8) или VARBINARY(8) в качестве значений версии строки NOT NULL или NULL. |
xml | varchar |
Определяемый пользователем тип | По возможности выполните преобразование в исходный тип данных. |
Значения по умолчанию | Значения по умолчанию поддерживают только литералы и константы. |
Дальнейшие действия
Дополнительные сведения о разработке таблиц см. в статье Общие сведения о проектировании таблиц в хранилище данных SQL Azure.