PostgreSQL 中的条件索引
Conditional index in PostgreSQL
我通过使用 Oracle 知道可以使用 CASE 语句进行条件索引。但是在 PostgreSQL 中有可能吗?例如索引如下:
CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
CASE
WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
ELSE SOME2_ID
END);
这已经是针对 PostgreSQL 的修改版本,因为 Oracle case 语句与 Postgres 不同。如果这是可能的,我该怎么做?或者,如果这不可能,是否有其他实现方式?
您需要将 CASE
表达式括在括号中:
CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
(CASE
WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
ELSE SOME2_ID
END) );
我通过使用 Oracle 知道可以使用 CASE 语句进行条件索引。但是在 PostgreSQL 中有可能吗?例如索引如下:
CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
CASE
WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
ELSE SOME2_ID
END);
这已经是针对 PostgreSQL 的修改版本,因为 Oracle case 语句与 Postgres 不同。如果这是可能的,我该怎么做?或者,如果这不可能,是否有其他实现方式?
您需要将 CASE
表达式括在括号中:
CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
(CASE
WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
ELSE SOME2_ID
END) );