首頁 > 資料庫 > mysql教程 > 如何在 PostgreSQL 中有效率地查詢 JSON 資料中的陣列元素?

如何在 PostgreSQL 中有效率地查詢 JSON 資料中的陣列元素?

DDD
發布: 2025-01-15 10:00:44
原創
888 人瀏覽過

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

從 PostgreSQL 中的 JSON 資料擷取數組元素

PostgreSQL 的 JSON 資料類型(在版本 9.3 中引入)簡化了複雜資料結構的儲存和管理。 然而,高效查詢 JSON 數組中的特定元素可能很棘手。 本指南示範了檢索數組元素的有效策略,特別關注物件數組中的「src」欄位。

PostgreSQL 9.4 及更高版本的最佳化方法 (jsonb)

PostgreSQL 9.4 及更高版本提供卓越的 jsonb 資料類型,提供增強的效能和功能。 最有效的方法是使用 @> 運算子和 jsonb_array_elements():

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

這個簡潔的查詢直接檢查「objects」陣列是否包含與指定條件相符的元素。

PostgreSQL 9.3 及更高版本的解決方案 (json)

對於 PostgreSQL 9.3 及更高版本(使用 json 類型),json_array_elements() 函數在橫向聯接中使用:

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

這種方法取消了數組的嵌套,從而允許檢查單個元素。

重要提示:

  • 這些範例假設 JSON 陣列內有單層巢狀。 嵌套較深的陣列將需要額外的 unnest 呼叫或橫向連接。
  • 對於大量資料集,在「物件」表達式上建立索引對於最佳化查詢效能至關重要。 這顯著加快了搜尋過程。

以上是如何在 PostgreSQL 中有效率地查詢 JSON 資料中的陣列元素?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板