在JSON數(shù)組中查找元素的索引我有張桌子看起來像這樣:CREATE TABLE tracks (id SERIAL, artists JSON);INSERT INTO tracks (id, artists)
VALUES (1, '[{"name": "blink-182"}]');INSERT INTO tracks (id, artists)
VALUES (2, '[{"name": "The Dirty Heads"}, {"name": "Louis Richards"}]');還有幾個專欄與這個問題無關。將它們作為JSON存儲是有原因的。我想要做的是查找一條軌道,它有一個特定的藝人名稱(完全匹配)。我使用這個查詢:SELECT * FROM tracks
WHERE 'ARTIST NAME' IN
(SELECT value->>'name' FROM json_array_elements(artists))例如SELECT * FROM tracks WHERE 'The Dirty Heads' IN
(SELECT value->>'name' FROM json_array_elements(artists))然而,這做了一個完整的表格掃描,它不是很快。我嘗試使用函數(shù)創(chuàng)建GIN索引names_as_array(artists),并使用'ARTIST NAME' = ANY names_as_array(artists)但是,沒有使用索引,而且查詢實際上要慢得多。
在JSON數(shù)組中查找元素的索引
手掌心
2019-07-02 10:02:11