我正在尝试优化 Postgres 中的查询,但没有成功。
这是我的表:
CREATE TABLE IF NOT EXISTS voc_cc348779bdc84f8aab483f662a798a6a (
id SERIAL,
date TIMESTAMP,
text TEXT,
themes JSONB,
meta JSONB,
canal VARCHAR(255),
source VARCHAR(255),
file VARCHAR(255)
);
Run Code Online (Sandbox Code Playgroud)
我有索引id和meta列:
CREATE UNIQUE INDEX voc_cc348779bdc84f8aab483f662a798a6a_id ON voc_cc348779bdc84f8aab483f662a798a6a USING btree(id);
CREATE INDEX voc_cc348779bdc84f8aab483f662a798a6a_meta ON voc_cc348779bdc84f8aab483f662a798a6a USING btree(meta);
Run Code Online (Sandbox Code Playgroud)
此表中有 62k 行。
我试图优化的请求是这样的:
SELECT meta_split.key, meta_split.value, COUNT(DISTINCT(id))
FROM voc_cc348779bdc84f8aab483f662a798a6a
LEFT JOIN LATERAL jsonb_each(voc_cc348779bdc84f8aab483f662a798a6a.meta)
AS meta_split ON TRUE
WHERE meta_split.value IS NOT NULL
GROUP BY meta_split.key, meta_split.value;
Run Code Online (Sandbox Code Playgroud)
在这个查询中,meta 是一个像这样的字典:
{
"Age":"50 to …Run Code Online (Sandbox Code Playgroud) sql postgresql json query-optimization postgresql-performance