Jenis data tabel di Synapse SQL

Dalam artikel ini, Anda akan menemukan rekomendasi untuk menentukan jenis data tabel di Kumpulan Khusus Synapse SQL.

Jenis data

Kumpulan Khusus Synapse SQL mendukung jenis data yang paling umum digunakan. Untuk daftar jenis data yang didukung, lihat jenis data dalam pernyataan BUAT TABEL. Untuk Synapse SQL Tanpa Server, silakan lihat artikel File penyimpanan kueri dengan kumpulan SQL tanpa server di Azure Synapse Analytics dan Cara menggunakan OPENROWSET menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics

Mengecilkan panjang baris

Meminimalkan ukuran jenis data memperpendek panjang baris, yang mengarah pada kinerja kueri yang lebih baik. Gunakan jenis data terkecil yang dapat digunakan untuk data Anda.

  • Hindari mendefinisikan kolom karakter dengan panjang default yang besar. Misalnya, jika nilai terpanjang adalah 25 karakter, tentukan kolom sebagai VARCHAR(25).
  • Hindari menggunakan NVARCHAR saat Anda hanya memerlukan VARCHAR.
  • Jika memungkinkan, gunakan NVARCHAR(4000) atau VARCHAR(8000) dan bukan NVARCHAR(MAX) atau VARCHAR(MAX).
  • Hindari penggunaan float dan desimal dengan skala 0 (nol). Ini harus terlihat seperti TINYINT, SMALLINT, INT atau BIGINT.

Catatan

Jika menggunakan tabel eksternal PolyBase untuk memuat tabel Synapse SQL, panjang baris tabel yang ditentukan tidak boleh melebihi 1 MB. Saat baris dengan data panjang variabel melebihi 1 MB, Anda dapat memuat baris dengan BCP, tetapi tidak dengan PolyBase.

Mengidentifikasi jenis data yang tidak didukung

Jika memigrasikan database dari database SQL lain, Anda mungkin menemukan jenis data yang tidak didukung di Synapse SQL. Gunakan kueri ini untuk menemukan jenis data yang tidak didukung di skema SQL yang sudah ada.

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;

Solusi untuk tipe data yang tidak didukung

Daftar berikut ini menunjukkan jenis data yang tidak didukung Synapse SQL dan memberikan alternatifnya agar Anda tidak menggunakan jenis data yang tidak didukung.

Jenis data tidak didukung Solusi Sementara
geometri varbinary
geografi varbinary
hierarchyid nvarchar(4000)
gambar varbinary
text varchar
ntext nvarchar
aql_variant Pisahkan kolom menjadi beberapa kolom yang diketik dengan kuat.
tabel Konversikan ke tabel sementara atau pertimbangkan untuk menyimpan data ke penyimpanan menggunakan CETAS.
timestamp Kerjakan ulang kode untuk menggunakan datetime2 dan fungsi CURRENT_TIMESTAMP. Hanya konstanta yang didukung sebagai default, current_timestamp tidak dapat didefinisikan sebagai batasan default. Jika perlu memigrasikan nilai versi baris dari kolom yang bertipe tanda waktu, gunakan nilai versi baris BINARY(8) atau VARBINARY(8) untuk NOT NULL atau NULL.
xml varchar
jenis yang ditetapkan pengguna Konversi kembali ke tipe data asli jika memungkinkan.
nilai default Nilai default hanya mendukung harfiah dan konstanta.

Langkah berikutnya

Untuk informasi selengkapnya tentang mengembangkan tabel, lihat Gambaran Umum Tabel.