Gunakan IN operator dengan SELECT pernyataan dalam kueri di Amazon Keyspaces - Amazon Keyspaces (untuk Apache Cassandra)

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan IN operator dengan SELECT pernyataan dalam kueri di Amazon Keyspaces

SELECTDI

Anda dapat menanyakan data dari tabel menggunakan SELECT pernyataan, yang membaca satu atau beberapa kolom untuk satu atau beberapa baris dalam tabel dan mengembalikan kumpulan hasil yang berisi baris yang cocok dengan permintaan. SELECTPernyataan berisi select_clause yang menentukan kolom mana yang akan dibaca dan dikembalikan dalam kumpulan hasil. Klausa dapat berisi instruksi untuk mengubah data sebelum mengembalikannya. WHEREKlausa opsional menentukan baris mana yang harus ditanyakan dan terdiri dari hubungan pada kolom yang merupakan bagian dari kunci utama. Amazon Keyspaces mendukung IN kata kunci dalam klausa. WHERE Bagian ini menggunakan contoh untuk menunjukkan bagaimana Amazon Keyspaces memproses SELECT pernyataan dengan kata kunci. IN

Contoh ini menunjukkan bagaimana Amazon Keyspaces SELECT memecah pernyataan dengan kata kunci menjadi IN subquery. Dalam contoh ini kita menggunakan tabel dengan namamy_keyspace.customers. Tabel memiliki satu kolom kunci utamadepartment_id, dua kolom pengelompokan sales_region_id dansales_representative_id, dan satu kolom yang berisi nama pelanggan di customer_name kolom.

SELECT * FROM my_keyspace.customers; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 0 | 1 | b 0 | 1 | 0 | c 0 | 1 | 1 | d 1 | 0 | 0 | e 1 | 0 | 1 | f 1 | 1 | 0 | g 1 | 1 | 1 | h

Dengan menggunakan tabel ini, Anda dapat menjalankan SELECT pernyataan berikut untuk menemukan pelanggan di departemen dan wilayah penjualan yang Anda minati dengan IN kata kunci dalam WHERE klausa. Pernyataan berikut adalah contohnya.

SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1) AND sales_region_id IN (0, 1);

Amazon Keyspaces membagi pernyataan ini menjadi empat subquery seperti yang ditunjukkan pada output berikut.

SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 0; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 0 | 1 | b SELECT * FROM my_keyspace.customers WHERE department_id = 0 AND sales_region_id = 1; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 1 | 0 | c 0 | 1 | 1 | d SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 0; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 1 | 0 | 0 | e 1 | 0 | 1 | f SELECT * FROM my_keyspace.customers WHERE department_id = 1 AND sales_region_id = 1; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 1 | 1 | 0 | g 1 | 1 | 1 | h

Saat IN kata kunci digunakan, Amazon Keyspaces secara otomatis melakukan paginasi hasil dalam salah satu kasus berikut:

  • Setelah setiap subquery ke-10 diproses.

  • Setelah memproses 1MB IO logis.

  • Jika Anda mengonfigurasiPAGE SIZE, Amazon Keyspaces melakukan paginasi setelah membaca jumlah kueri untuk diproses berdasarkan set. PAGE SIZE

  • Saat Anda menggunakan LIMIT kata kunci untuk mengurangi jumlah baris yang dikembalikan, Amazon Keyspaces melakukan paginasi setelah membaca jumlah kueri untuk diproses berdasarkan set. LIMIT

Tabel berikut digunakan untuk mengilustrasikan ini dengan sebuah contoh.

Untuk informasi lebih lanjut tentang pagination, lihatHasil paginasi di Amazon Keyspaces.

SELECT * FROM my_keyspace.customers; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 0 | 0 | g 2 | 1 | 1 | h 2 | 2 | 2 | i 0 | 0 | 0 | a 0 | 1 | 1 | b 0 | 2 | 2 | c 1 | 0 | 0 | d 1 | 1 | 1 | e 1 | 2 | 2 | f 3 | 0 | 0 | j 3 | 1 | 1 | k 3 | 2 | 2 | l

Anda dapat menjalankan pernyataan berikut pada tabel ini untuk melihat bagaimana pagination bekerja.

SELECT * FROM my_keyspace.customers WHERE department_id IN (0, 1, 2, 3) AND sales_region_id IN (0, 1, 2) AND sales_representative_id IN (0, 1);

Amazon Keyspaces memproses pernyataan ini sebagai 24 subkueri, karena kardinalitas produk Cartesian dari semua istilah yang terkandung dalam kueri ini adalah 24. IN

department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 0 | 0 | 0 | a 0 | 1 | 1 | b 1 | 0 | 0 | d 1 | 1 | 1 | e ---MORE--- department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 0 | 0 | g 2 | 1 | 1 | h 3 | 0 | 0 | j ---MORE--- department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 3 | 1 | 1 | k

Contoh ini menunjukkan bagaimana Anda dapat menggunakan ORDER BY klausa dalam SELECT pernyataan dengan IN kata kunci.

SELECT * FROM my_keyspace.customers WHERE department_id IN (3, 2, 1) ORDER BY sales_region_id DESC; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 3 | 2 | 2 | l 3 | 1 | 1 | k 3 | 0 | 0 | j 2 | 2 | 2 | i 2 | 1 | 1 | h 2 | 0 | 0 | g 1 | 2 | 2 | f 1 | 1 | 1 | e 1 | 0 | 0 | d

Subkueri diproses dalam urutan di mana kunci partisi dan kolom kunci pengelompokan disajikan dalam kueri. Dalam contoh di bawah ini, subquery untuk nilai kunci partisi” 2 “diproses terlebih dahulu, diikuti oleh subquery untuk nilai kunci partisi” 3 “dan” 1”. Hasil subquery yang diberikan diurutkan sesuai dengan klausa pengurutan kueri, jika ada, atau urutan pengelompokan tabel yang ditentukan selama pembuatan tabel.

SELECT * FROM my_keyspace.customers WHERE department_id IN (2, 3, 1) ORDER BY sales_region_id DESC; department_id | sales_region_id | sales_representative_id | customer_name ---------------+-----------------+-------------------------+-------------- 2 | 2 | 2 | i 2 | 1 | 1 | h 2 | 0 | 0 | g 3 | 2 | 2 | l 3 | 1 | 1 | k 3 | 0 | 0 | j 1 | 2 | 2 | f 1 | 1 | 1 | e 1 | 0 | 0 | d