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 WHERE klausa. 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:
-
Buat
SELECT
pernyataan Anda untuk tidak menghasilkan pemindaian tabel lengkap dengan memastikan kondisi WHERE klausa Anda dikonfigurasi sesuai dengan itu. -
Nonaktifkan pemindaian tabel lengkap menggunakan IAM kebijakan yang ditentukan diContoh: Izinkan pernyataan pilih dan tolak pernyataan pemindaian tabel secara penuh di PartiQL untuk DynamoDB, dalam panduan pengembang DynamoDB.
Untuk informasi selengkapnya, lihat Praktik terbaik untuk Mengkueri dan memindai data, dalam panduan developer DynamoDB.
Sintaks
SELECT
expression
[, ...] 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
SELECT
tidak menghasilkan pemindaian tabel secara lengkap, kondisi klausulWHERE
harus menentukan kunci partisi. Gunakan kesetaraan atau operator IN.Misalnya, jika Anda memiliki tabel
Orders
dengan kunci partisiOrderID
dan 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
SELECT
berikut 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
) tentukanDESC
jika 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 lengkap yang mengembalikan semua item dari Orders
tabel dalam rentang Total
urutan tertentu, menggunakan BETWEEN operator dan atribut Total
non-kunci.
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 sortir dalam kondisi WHERE klausa dan menggunakan jalur dokumen MovieID
dalam klausa. SELECT
SELECT Devices.FireStick.DateWatched[0] FROM WatchList WHERE CustomerID= 'C1' AND MovieID= 'M1'
Kueri berikut menunjukkan pemindaian tabel lengkap yang mengembalikan daftar item tempat perangkat firestick pertama kali digunakan setelah 24/12/19 menggunakan jalur dokumen dalam kondisi klausa. WHERE
SELECT Devices FROM WatchList WHERE Devices.FireStick.DateWatched[0] >= '12/24/19'