Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pernyataan pemilihan PartiQL untuk DynamoDB
Gunakan pernyataan SELECT untuk mengambil data dari tabel di Amazon DynamoDB.
Menggunakan SELECT pernyataan dapat menghasilkan pemindaian tabel lengkap jika kondisi kesetaraan atau IN dengan kunci partisi tidak disediakan dalam klausa WHERE. Operasi pemindaian memeriksa setiap item untuk nilai yang diminta dan dapat menggunakan throughput yang disediakan untuk indeks atau tabel besar dalam satu operasi.
Jika ingin menghindari pemindaian tabel secara lengkap di PartiQL, Anda dapat:
-
Menulis pernyataan
SELECTAnda agar tidak memindai tabel secara lengkap dengan memastikan ketentuan klausul WHERE Anda dikonfigurasi dengan semestinya. -
Menonaktifkan pemindaian tabel lengkap menggunakan kebijakan IAM yang ditentukan di Contoh: Mengizinkan pernyataan pilihan dan menolak pernyataan pemindaian tabel lengkap di PartiQL untuk DynamoDB, dalam panduan developer DynamoDB.
Untuk informasi selengkapnya, lihat Praktik terbaik untuk Mengkueri dan memindai data, dalam panduan developer DynamoDB.
Sintaks
SELECTexpression[, ...] FROMtable[.index] [ WHEREcondition] [ [ORDER BYkey[DESC|ASC] , ...]
Parameter
expression-
(Diperlukan) Proyeksi yang terbentuk dari wildcard
*atau daftar proyeksi dari satu nama atribut atau lebih atau jalur dokumen dari set hasil. Ekspresi dapat terdiri dari panggilan ke Gunakan fungsi PartiQL dengan DynamoDB atau bidang yang diubah oleh Aritmatika PartiQL, perbandingan, dan operator logika untuk DynamoDB . table-
(Diperlukan) Nama tabel untuk kueri.
index-
(Opsional) Nama indeks untuk kueri.
catatan
Anda harus menambahkan tanda kutip ganda ke nama tabel dan nama indeks saat mengkueri indeks.
SELECT * FROM "TableName"."IndexName" condition-
(Opsional) Kriteria seleksi untuk kueri.
penting
Untuk memastikan bahwa pernyataan
SELECTtidak menghasilkan pemindaian tabel secara lengkap, kondisi klausulWHEREharus menentukan kunci partisi. Gunakan kesetaraan atau operator IN.Misalnya, jika Anda memiliki tabel
Ordersdengan kunci partisiOrderIDdan atribut non-kunci lainnya, termasukAddress, pernyataan berikut tidak akan menghasilkan pemindaian tabel secara lengkap:SELECT * FROM "Orders" WHERE OrderID = 100 SELECT * FROM "Orders" WHERE OrderID = 100 and Address='some address' SELECT * FROM "Orders" WHERE OrderID = 100 or OrderID = 200 SELECT * FROM "Orders" WHERE OrderID IN [100, 300, 234]Namun, pernyataan
SELECTberikut akan menghasilkan pemindaian tabel secara lengkap:SELECT * FROM "Orders" WHERE OrderID > 1 SELECT * FROM "Orders" WHERE Address='some address' SELECT * FROM "Orders" WHERE OrderID = 100 OR Address='some address' key-
(Opsional) Kunci hash atau kunci urutan untuk digunakan dalam mengurutkan hasil yang dikembalikan. Urutan defaultnya adalah naik (
ASC) tentukanDESCjika Anda ingin hasil dikembalikan dalam urutan turun.
catatan
Jika Anda menghapus klausul WHERE, semua item dalam tabel akan diambil.
Contoh
Kueri berikut mengembalikan satu item, jika ada, dari tabel Orders dengan menentukan kunci partisi, OrderID, dan menggunakan operator kesetaraan.
SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1
Kueri berikut mengembalikan semua item dalam tabel Orders yang memiliki kunci partisi spesifik, OrderID, nilai menggunakan operator OR.
SELECT OrderID, Total FROM "Orders" WHERE OrderID = 1 OR OrderID = 2
Kueri berikut mengembalikan semua item dalam tabel Orders yang memiliki kunci partisi spesifik, OrderID, nilai menggunakan operator IN. Hasil yang dikembalikan dalam urutan turun, berdasarkan nilai atribut kunci OrderID.
SELECT OrderID, Total FROM "Orders" WHERE OrderID IN [1, 2, 3] ORDER BY OrderID DESC
Kueri berikut menunjukkan pemindaian tabel secara lengkap yang mengembalikan semua item dari tabel Orders yang memiliki Total lebih dari 500, dengan Total adalah atribut non-kunci.
SELECT OrderID, Total FROM "Orders" WHERE Total > 500
Kueri berikut menunjukkan pemindaian tabel secara lengkap yang mengembalikan semua item dari tabel Orders di dalam rentang urutan Total tertentu, menggunakan operator IN dan atribut non-kunci Total.
SELECT OrderID, Total FROM "Orders" WHERE Total IN [500, 600]
Kueri berikut menunjukkan pemindaian tabel secara lengkap yang mengembalikan semua item dari tabel Orders di dalam rentang urutan Total tertentu, menggunakan operator BETWEEN dan atribut non-kunci Total.
SELECT OrderID, Total FROM "Orders" WHERE Total BETWEEN 500 AND 600
Kueri berikut mengembalikan tanggal pertama perangkat firestick digunakan untuk menonton dengan menentukan kunci partisi CustomerID dan kunci urutan MovieID dalam kondisi klausul WHERE dan menggunakan jalur dokumen dalam klausul SELECT.
SELECT Devices.FireStick.DateWatched[0] FROM WatchList WHERE CustomerID= 'C1' AND MovieID= 'M1'
Kueri berikut menunjukkan pemindaian tabel secara penuh yang mengembalikan daftar item tempat perangkat firestick pertama kali digunakan setelah 24/12/19 menggunakan jalur dokumen dalam kondisi klausul WHERE.
SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'