PostgreSQL中的条件索引

时间:2015-01-19 19:23:00

标签: postgresql indexing

我从使用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不同。如果这是可能的,我该怎么做?或者,如果这是不可能的,还有另一种方法来实现它吗?

1 个答案:

答案 0 :(得分:2)

您需要将CASE表达式括在括号中:

CREATE INDEX IX_INDEXNAME ON SOME_TABLE (
     (CASE 
        WHEN COLUMN1 = 0 AND COLUMN2 = 'value' THEN SOME1_ID
        ELSE SOME2_ID
     END) );