Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menyoal Elemen Array dengan Cekap dalam Data JSON dalam PostgreSQL?

Bagaimana untuk Menyoal Elemen Array dengan Cekap dalam Data JSON dalam PostgreSQL?

DDD
DDDasal
2025-01-15 10:00:44889semak imbas

How to Efficiently Query for Array Elements within JSON Data in PostgreSQL?

Mengambil Elemen Tatasusunan daripada Data JSON dalam PostgreSQL

Jenis data JSON PostgreSQL (diperkenalkan dalam versi 9.3) memudahkan penyimpanan dan pengurusan struktur data yang kompleks. Walau bagaimanapun, dengan cekap menanyakan elemen tertentu dalam tatasusunan JSON boleh menjadi rumit. Panduan ini menunjukkan strategi yang berkesan untuk mendapatkan semula elemen tatasusunan, terutamanya memfokuskan pada medan 'src' dalam tatasusunan objek.

Pendekatan Dioptimumkan untuk PostgreSQL 9.4 dan Kemudian (jsonb)

PostgreSQL 9.4 dan versi yang lebih baru menawarkan jsonb jenis data yang unggul, memberikan prestasi dan kefungsian yang dipertingkatkan. Kaedah yang paling cekap menggunakan operator @> dengan jsonb_array_elements():

<code class="language-sql">SELECT * FROM reports WHERE data->'objects' @> '[{"src":"foo.png"}]';</code>

Pertanyaan ringkas ini secara langsung menyemak sama ada tatasusunan 'objek' mengandungi elemen yang sepadan dengan kriteria yang ditentukan.

Penyelesaian untuk PostgreSQL 9.3 dan Kemudian (json)

Untuk PostgreSQL 9.3 dan lebih baru (menggunakan jenis json), fungsi json_array_elements() digunakan dalam cantuman sisi:

<code class="language-sql">SELECT data::text, obj
FROM reports r, json_array_elements(r.data#>'{objects}') obj
WHERE obj->>'src' = 'foo.png';</code>

Pendekatan ini membuka sarang tatasusunan, membenarkan pemeriksaan elemen individu.

Nota Penting:

  • Contoh ini menganggap satu tahap sarang dalam tatasusunan JSON. Tatasusunan bersarang lebih dalam akan memerlukan unnest panggilan tambahan atau cantuman sisi.
  • Untuk set data yang banyak, mencipta indeks pada ungkapan 'objek' adalah penting untuk mengoptimumkan prestasi pertanyaan. Ini mempercepatkan proses carian dengan ketara.

Atas ialah kandungan terperinci Bagaimana untuk Menyoal Elemen Array dengan Cekap dalam Data JSON dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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