【发布时间】:2021-08-27 16:22:51
【问题描述】:
我使用的是 PostgreSQL 11.8
CREATE INDEX ix_products_product_sku_with_json_columns
ON products USING btree((product_sku))
INCLUDE ((data->>'variantCode'));
错误:包含的列中不支持表达式
SQL 状态:0A000
不支持将表达式作为包含列,因为它们不能用于仅索引扫描。
我想data->>'variantCode' 是一个表达式,这就是故事的结局?
我可以看到两种解决方法,但没有一种对我有吸引力:
- 在表中创建一个专用的 VariantCode 常规 SQL 列
- 将
data->>'variantCode'作为索引键的一部分
第二个选项有多糟糕?
最终目标是在以下查询中执行Index-Only Scan:
SELECT data->>'variantCode', ARRAY_AGG(product_sku)
FROM products
GROUP BY data->>'variantCode'
【问题讨论】:
标签: postgresql indexing postgresql-11