Halaman ini menjelaskan operator yang digunakan dalam rencana eksekusi kueri Spanner. Untuk mengetahui informasi tentang cara mengambil rencana eksekusi untuk kueri tertentu menggunakan konsol Google Cloud , lihat Memahami cara Spanner menjalankan kueri.
Paket eksekusi mendukung database dialek GoogleSQL dan database dialek PostgreSQL.
Memetakan konstruksi SQL ke operator eksekusi kueri
Pemetaan yang tepat antara konstruksi SQL dan operator eksekusi kueri bergantung pada pengoptimalan kueri. Tabel berikut menunjukkan beberapa pemetaan umum:
| SQL | Operator eksekusi kueri |
|---|---|
| Referensi tabel | Pemindaian Tabel, Pemindaian Indeks |
WHERE |
Pindai Filter, Filter |
GROUP BY |
Agregat |
Fungsi skalar (seperti ISNULL) |
Komputasi |
Fungsi agregat (seperti SUM) |
Agregat |
JOIN |
Operator gabungan apa pun; lihat Gabungan |
| Subkueri | Subkueri Skalar atau Array |
LIMIT |
Batas, Urutkan Batas |
ORDER BY |
Urutkan, Batas Urutan |
Operator eksekusi kueri
Bagian ini mencantumkan semua operator eksekusi kueri yang dapat membentuk rencana eksekusi kueri di Spanner.
Operator daun
Operator yang tidak memiliki turunan.
| Nama | Ringkasan |
|---|---|
| Membuka array | Meratakan array input menjadi baris elemen. |
| Buat hubungan | Menampilkan nol baris atau lebih. |
| Relasi unit | Menampilkan satu baris. |
| Relasi kosong | Tidak menampilkan baris. |
| Pindai | Memindai sumber baris dan menampilkannya. |
| Filter pemindaian | Bekerja dengan pemindaian untuk mengurangi jumlah baris yang dibaca dari database. |
Operator unary
Operator yang memiliki satu turunan relasional.
| Nama | Ringkasan |
|---|---|
| Agregat | Menerapkan pernyataan SQL GROUP BY dan fungsi agregat. |
| Menerapkan mutasi | Menerapkan mutasi dari pernyataan Bahasa Manipulasi Data (DML) ke tabel. |
| Buat batch | Mengelompokkan baris inputnya ke dalam urutan. |
| Komputasi | Menghasilkan output dengan membaca baris inputnya dan menambahkan satu atau beberapa kolom tambahan yang dihitung menggunakan ekspresi skalar. |
| Compute struct | Membuat variabel untuk struktur yang berisi kolom untuk setiap kolom input. |
| DataBlockToRowAdapter | Menyesuaikan metode eksekusi berorientasi batch ke metode eksekusi berorientasi baris. |
| Filter | Membaca semua baris dari inputnya, menerapkan predikat skalar pada setiap baris, lalu hanya menampilkan baris yang memenuhi predikat. |
| Batas | Membatasi jumlah baris yang ditampilkan. |
| Gabungan lokal yang terpisah | Menemukan pemisahan tabel yang disimpan di server lokal, menjalankan subkueri pada setiap pemisahan, lalu membuat gabungan yang menggabungkan semua hasil. |
| Penetapan ID acak | Menghasilkan output dengan membaca baris inputnya dan menambahkan angka acak ke setiap baris. |
| RowToDataBlockAdapter | Menyesuaikan metode eksekusi berorientasi baris dengan metode eksekusi berorientasi batch. |
| Hasil serialisasi | Menyerialkan setiap baris hasil akhir kueri untuk ditampilkan kepada klien. |
| Urutkan | Membaca baris input, mengurutkannya berdasarkan kolom, lalu menampilkan hasil yang telah diurutkan. |
| Fungsi bernilai tabel (TVF) | Menghasilkan output dengan membaca baris input dan menerapkan fungsi yang ditentukan. |
| Input gabungan | Menampilkan hasil ke operator gabungan semua. |
Operator biner
Operator yang memiliki dua turunan relasional.
| Nama | Ringkasan |
|---|---|
| Daftar untuk bergabung | Menerapkan setiap baris di sisi input ke sisi peta menggunakan metode penerapan. |
| Hash join | Membaca baris dari input yang ditandai sebagai build dan menyisipkannya ke dalam tabel hash berdasarkan kondisi gabungan. |
| Gabungan penggabungan | Menggunakan kedua aliran input secara bersamaan dan menampilkan baris saat kondisi penggabungan terpenuhi. |
| Gabungan rekursif | Melakukan penggabungan dua input, satu yang mewakili kasus dasar, dan yang lainnya mewakili kasus rekursif. |
Operator N-ary
Operator yang memiliki lebih dari dua turunan relasional.
| Nama | Ringkasan |
|---|---|
| Gabungkan semua | Menggabungkan semua set baris turunannya tanpa menghapus duplikat. |
Operator terdistribusi
Operator yang dieksekusi di beberapa server.
| Nama | Ringkasan |
|---|---|
| Gabungan terdistribusi | Secara konseptual membagi satu atau beberapa tabel menjadi beberapa pemisahan, mengevaluasi subkueri secara terpisah pada setiap pemisahan dari jarak jauh, lalu menggabungkan semua hasil. |
| Penerapan terdistribusi | Memperluas operator gabungan terapan dengan menjalankan di beberapa server. |
| Gabungan penggabungan terdistribusi | Mendistribusikan kueri di beberapa server jarak jauh, lalu menggabungkan hasil kueri untuk menghasilkan hasil yang diurutkan. |
| Gabungan hash siaran push | Menerapkan gabungan SQL menggunakan gabungan hash terdistribusi. |
Subkueri skalar
Sub-ekspresi SQL yang menampilkan satu nilai skalar.
| Nama | Ringkasan |
|---|---|
| Subkueri skalar | Sub-ekspresi SQL yang menampilkan satu nilai skalar. |
Subkueri array
Sub-ekspresi SQL yang menampilkan array.
| Nama | Ringkasan |
|---|---|
| Subkueri array | Sub-ekspresi SQL yang menampilkan array. |
Konstruktor struct
Operator yang membuat struct (kumpulan kolom) untuk baris yang dihasilkan dari operasi komputasi.
| Nama | Ringkasan |
|---|---|
| Konstruktor struct | Operator yang membuat struct (kumpulan kolom) untuk baris yang dihasilkan dari operasi komputasi. |