Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Panggil Fungsi Pengembalian Set Berbilang Kali dengan Cekap dengan Argumen Tatasusunan dalam PostgreSQL?

Bagaimanakah Saya Boleh Panggil Fungsi Pengembalian Set Berbilang Kali dengan Cekap dengan Argumen Tatasusunan dalam PostgreSQL?

Mary-Kate Olsen
Lepaskan: 2024-12-30 07:35:18
asal
501 orang telah melayarinya

How Can I Efficiently Call a Set-Returning Function Multiple Times with Array Arguments in PostgreSQL?

Panggil Fungsi Pengembalian Set dengan Argumen Tatasusunan Berbilang Kali

Dalam PostgreSQL, anda mungkin menghadapi situasi di mana anda perlu menggunakan fungsi pengembalian set beberapa kali , setiap kali menyediakan tatasusunan sebagai hujah. Walau bagaimanapun, apabila menggunakan kaedah tradisional menghantar tatasusunan tunggal kepada fungsi, fungsi itu mungkin dipanggil beberapa kali, mengakibatkan pemprosesan yang tidak cekap.

Untuk menyelesaikan isu ini, PostgreSQL 9.3 dan kemudiannya menawarkan LEFT JOIN LATERAL . .. PADA sintaks sebenar. Pendekatan ini mengoptimumkan pelaksanaan dengan melakukan langkah berikut:

  1. Pernyataan LEFT JOIN LATERAL bergabung dengan data daripada subkueri dengan keputusan memanggil fungsi set-returning, foo(sub.arr).
  2. Klausa benar ON memastikan bahawa semua baris daripada subkueri disertakan dalam hasil, tidak kira sama ada fungsi mengembalikan sebarang baris.

Untuk menggambarkan pendekatan ini, pertimbangkan contoh berikut:

SELECT sub.dataid, f.*
FROM  (
   SELECT dataid, array_agg(data) AS arr
   FROM   dataset
   WHERE  dataid = something
   GROUP  BY 1
   ) sub
LEFT   JOIN LATERAL foo(sub.arr) f ON true;
Salin selepas log masuk

Dalam contoh ini, subkueri mengagregatkan lajur data untuk setiap dataid, mencipta tatasusunan. Tatasusunan ini kemudiannya dihantar sebagai hujah kepada fungsi foo(), yang mengembalikan set baris data yang dipertingkatkan.

Sebagai alternatif, jika fungsi foo() berpotensi tidak mengembalikan baris dan anda mahu mengekalkan semua baris di sebelah kiri gabungan, anda boleh menggunakan CROSS JOIN LATERAL atau sintaks trengkas.

Dengan menggunakan pendekatan ini, anda boleh menggunakan fungsi pengembalian set berbilang kali dengan cekap dengan argumen tatasusunan, mengelakkan panggilan fungsi yang tidak perlu.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Panggil Fungsi Pengembalian Set Berbilang Kali dengan Cekap dengan Argumen Tatasusunan dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan