PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Paralel unnest() dan mengurutkan urutan di PostgreSQL

Ya, itu adalah fitur Postgres dan paralel unnesting dijamin untuk disinkronkan (selama semua larik memiliki jumlah elemen yang sama).
Postgres 9.4 menambahkan solusi bersih untuk paralel unnest:

  • Hapus beberapa array secara paralel

Urutan baris yang dihasilkan tidak dijamin. Sebenarnya, dengan pernyataan sederhana seperti:

SELECT unnest(ARRAY[5,3,9]) AS id

urutan baris yang dihasilkan "dijamin", tetapi Postgres tidak menyatakan apa pun. Pengoptimal kueri bebas mengurutkan baris sesuai keinginan selama urutannya tidak ditentukan secara eksplisit. Ini mungkin memiliki efek samping dalam kueri yang lebih kompleks.

Jika kueri kedua dalam pertanyaan Anda adalah yang sebenarnya Anda inginkan (tambahkan nomor indeks ke elemen array yang tidak bersarang), ada cara yang lebih baik dengan generate_subscripts() :

SELECT unnest(ARRAY[5,3,9]) AS id
     , generate_subscripts(ARRAY[5,3,9], 1) AS idx
ORDER  BY idx;

Detail dalam jawaban terkait ini:

  • Bagaimana cara mengakses indeks internal array dengan postgreSQL?

Anda akan tertarik dengan WITH ORDINALITY di Postgres 9.4 :

  • PostgreSQL unnest() dengan nomor elemen

Kemudian Anda dapat menggunakan:

SELECT * FROM unnest(ARRAY[5,3,9]) WITH ORDINALITY tbl(id, idx);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Operator tidak ada:integer =? saat menggunakan Postgres

  2. Bagaimana cara memigrasi Tabel Postgres yang ada ke tabel yang dipartisi setransparan mungkin?

  3. Rails:Memasang permata PG di OS X - kegagalan membangun ekstensi asli

  4. Cara mengatur database PostgreSQL di Django

  5. Bagaimana cara menghubungkan aplikasi C# Windows mobile 6.5 ke database Postgres?