在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"}]');還有幾個(gè)專欄與這個(gè)問題無關(guān)。將它們作為JSON存儲(chǔ)是有原因的。我想要做的是查找一條軌道,它有一個(gè)特定的藝人名稱(完全匹配)。我使用這個(gè)查詢: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))然而,這做了一個(gè)完整的表格掃描,它不是很快。我嘗試使用函數(shù)創(chuàng)建GIN索引names_as_array(artists),并使用'ARTIST NAME' = ANY names_as_array(artists)但是,沒有使用索引,而且查詢實(shí)際上要慢得多。
在JSON數(shù)組中查找元素的索引
手掌心
2019-07-02 10:02:11