Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Batasan kunci utama, yang menangkap hubungan antar bidang dalam tabel, dapat membantu pengguna dan alat memahami hubungan dalam data Anda. Artikel ini berisi contoh yang memperlihatkan bagaimana Anda dapat menggunakan kunci primer dengan opsi RELY untuk mengoptimalkan beberapa jenis kueri umum.
Nota
Optimasi kueri yang terkait dengan perintah RELY mengharuskan kueri dijalankan pada sistem komputasi yang didukung Photon. Lihat Apa itu Photon?. Photon berjalan secara default pada gudang SQL dan komputasi tanpa server untuk buku catatan dan alur kerja. Untuk mempelajari selengkapnya tentang Photon, lihat Apa itu Photon?.
Menambahkan batasan kunci primer
Anda dapat menambahkan batasan kunci utama dalam pernyataan pembuatan tabel Anda, seperti dalam contoh berikut, atau menambahkan batasan ke tabel menggunakan klausa ADD CONSTRAINT.
CREATE TABLE customer (
c_customer_sk int,
PRIMARY KEY (c_customer_sk)
...
)
Dalam contoh ini, c_customer_sk adalah kunci ID pelanggan. Batasan kunci utama menentukan bahwa setiap nilai ID pelanggan harus unik dalam tabel. Azure Databricks tidak memberlakukan batasan kunci. Mereka dapat divalidasi melalui alur data atau ETL yang ada. Lihat Mengelola kualitas data dengan ekspektasi alur untuk mempelajari ekspektasi kerja pada tabel streaming dan tampilan materialisasi. Lihat batasan di Azure Databricks untuk mempelajari tentang bekerja dengan batasan pada tabel Delta.
Nota
Pengguna bertanggung jawab untuk memeriksa apakah batasan terpenuhi. Mengandalkan batasan yang tidak terpenuhi dapat menyebabkan hasil kueri yang salah.
Gunakan RELY untuk mengaktifkan pengoptimalan
Ketika Anda tahu bahwa batasan kunci primer valid, Anda dapat mengaktifkan pengoptimalan berdasarkan batasan dengan menentukannya dengan opsi RELY. Lihat klausa ADD CONSTRAINT untuk sintaks lengkapnya.
Opsi RELY memungkinkan Azure Databricks mengeksploitasi batasan untuk menulis ulang kueri. Pengoptimalan berikut hanya dapat dilakukan jika RELY opsi ditentukan dalam ADD CONSTRAINT klausa atau ALTER TABLE pernyataan.
Menggunakan ALTER TABLE, Anda dapat mengubah kunci primer tabel untuk menyertakan RELY opsi, seperti yang diperlihatkan dalam contoh berikut.
ALTER TABLE
customer DROP PRIMARY KEY;
ALTER TABLE
customer
ADD
PRIMARY KEY (c_customer_sk) RELY;
Contoh pengoptimalan
Contoh berikut memperluas contoh sebelumnya yang membuat tabel customer di mana c_customer_sk adalah pengidentifikasi unik terverifikasi bernama sebagai PRIMARY KEY dengan opsi RELY yang ditentukan.
Contoh 1: Menghilangkan agregasi yang tidak perlu
Berikut ini memperlihatkan kueri yang menerapkan DISTINCT operasi ke kunci primer.
SELECT
DISTINCT c_customer_sk
FROM
customer;
Karena kolom c_customer_sk adalah batasan PRIMARY KEY terverifikasi, semua nilai dalam kolom bersifat unik. Dengan opsi RELY ditentukan, Azure Databricks dapat mengoptimalkan kueri dengan tidak melakukan operasi DISTINCT.
Contoh 2: Menghilangkan gabungan yang tidak perlu
Contoh berikut menunjukkan kueri di mana Azure Databricks dapat menghilangkan gabungan yang tidak perlu.
Kueri menggabungkan tabel fakta, store_sales dengan tabel dimensi, customer. Ini melakukan penggabungan kiri luar, sehingga hasil kueri menyertakan semua rekaman dari tabel store_sales dan rekaman yang cocok dari tabel customer. Jika tidak ada rekaman yang cocok dalam tabel customer, hasil kueri memperlihatkan nilai NULL untuk kolom c_customer_sk.
SELECT
SUM(ss_quantity)
FROM
store_sales ss
LEFT JOIN customer c ON ss.customer_sk = c.c_customer_sk;
Untuk memahami mengapa penggabungan ini tidak perlu, perhatikan pernyataan kueri. Ini hanya memerlukan kolom ss_quantity dari tabel store_sales. Tabel customer digabungkan pada kunci utamanya, sehingga setiap baris store_sales cocok dengan paling banyak satu baris dalam customer. Karena operasi adalah gabungan luar, semua rekaman dari tabel store_sales dipertahankan, sehingga gabungan tidak mengubah data apa pun dari tabel tersebut. Agregasi SUM sama apakah tabel ini digabungkan atau tidak.
Menggunakan batasan kunci utama dengan RELY memberi pengoptimal kueri informasi yang diperlukan untuk menghilangkan gabungan. Kueri yang dioptimalkan terlihat lebih seperti ini:
SELECT
SUM(ss_quantity)
FROM
store_sales ss
Langkah berikutnya
Lihat Diagram Hubungan Entitas untuk mempelajari cara mengeksplorasi kunci utama dan hubungan kunci asing di antarmuka pengguna Penjelajah Katalog.