Табличные типы данных в Synapse SQL
В этой статье содержатся рекомендации по определению табличных типов данных в выделенном пуле Synapse SQL.
Типы данных
Выделенный пул Synapse SQL поддерживает самые распространенные типы данных. Список поддерживаемых типов данных см. в типах данных в инструкции CREATE TABLE. Для Synapse SQL Serverless см. статью "Запрос файлов хранилища с бессерверным пулом SQL в Azure Synapse Analytics и использование OPENROWSET с использованием бессерверного пула SQL в Azure Synapse Analytics"
Уменьшение длины строки
Уменьшение размера типов данных сокращает длину строки, что улучшает производительность запросов. Используйте наименьший тип данных для данных.
- Не рекомендуется использовать по умолчанию длинные значения столбцов. Например, если самое длинное значение состоит из 25 знаков, столбец необходимо определить как VARCHAR(25).
- Не нужно использовать NVARCHAR, если вам требуется только VARCHAR.
- По возможности используйте NVARCHAR(4000) или VARCHAR(8000) вместо NVARCHAR(MAX) или VARCHAR(MAX).
- Старайтесь не использовать числа с плавающей точкой и десятичные числа с нулевой (0) шкалой. Они должны быть TINYINT, SMALLINT, INT или BIGINT.
Примечание.
Если для загрузки таблиц Synapse SQL используются внешние таблицы PolyBase, определенная длина строки таблицы не должна превышать 1 МБ. Если строка с данными переменной длины превышает 1 МБ, можно загрузить строку с помощью BCP, а не PolyBase.
Определение неподдерживаемых типов данных
При переносе базы данных из другой базы данных SQL может возникнуть типы данных, которые не поддерживаются в Synapse 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')
OR y.[is_user_defined] = 1;
Обходные решения для неподдерживаемых типов данных
В следующем списке показаны типы данных, которые Synapse SQL не поддерживаются и предоставляют альтернативные варианты, которые можно использовать вместо неподдерживаемых типов данных.
Неподдерживаемые типы данных | Обходное решение |
---|---|
geometry | varbinary |
geography | varbinary |
hierarchyid | nvarchar(4000) |
Изображение | varbinary |
text | varchar |
ntext | nvarchar |
sql_variant | Разделите столбец на несколько строго типизированных столбцов. |
table | Преобразуйте во временные таблицы или сохраните в хранилище с помощью CETAS. |
timestamp | Для использования datetime2 и функции CURRENT_TIMESTAMP внесите изменения в код. В качестве значений по умолчанию поддерживаются только константы, поэтому current_timestamp нельзя определить как ограничение по умолчанию. Если нужно перенести значения версии строки из типизированного столбца timestamp, используйте BINARY(8) или VARBINARY(8) в качестве значений версии строки NOT NULL или NULL. |
xml | varchar |
Определяемый пользователем тип | По возможности выполните преобразование в исходный тип данных. |
Значения по умолчанию | Значения по умолчанию поддерживают только литералы и константы. |
Связанный контент
Дополнительные сведения о разработке таблиц см . в обзоре разработки.