Pernyataan pemilihan PartiQL untuk DynamoDB - Amazon DynamoDB

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:

Untuk informasi selengkapnya, lihat Praktik terbaik untuk Mengkueri dan memindai data, dalam panduan developer DynamoDB.

Sintaks

SELECT expression [, ...] FROM table[.index] [ WHERE condition ] [ [ORDER BY key [DESC|ASC] , ...]

Parameter

ekspresi

(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 amazon DynamoDB atau bidang yang diubah oleh Aritmatika PartiQL, perbandingan, dan operator logika untuk DynamoDB .

tabel

(Diperlukan) Nama tabel untuk kueri.

indeks

(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"
ketentuan

(Opsional) Kriteria seleksi untuk kueri.

penting

Untuk memastikan bahwa pernyataan SELECT tidak menghasilkan pemindaian tabel secara lengkap, kondisi klausul WHERE harus menentukan kunci partisi. Gunakan kesetaraan atau operator IN.

Misalnya, jika Anda memiliki tabel Orders dengan kunci partisi OrderID dan atribut non-kunci lainnya, termasuk Address, 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 pk = 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'
kunci

(Opsional) Kunci hash atau kunci urutan untuk digunakan dalam mengurutkan hasil yang dikembalikan. Urutan defaultnya adalah naik (ASC) tentukan DESC 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 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'